История изменений
Исправление Siborgium, (текущая версия) :
Развлечения ради набросал решение на регулярках vis:
:y/^\s+/ x/[\ \t]+/ c/ /
– заменить все последовательности пробелов/табов, не начинающиеся с начала строки, одиночными пробелами.:x/[[(<]\s/ x/\s/ d
– удалить пробелы после открывающихся скобок.:x/\s[])>]/ x/\s/ d
– удалить пробелы перед закрывающимися скобками.:x/\s+;/ x/\s+/ d
– удалить пробелы перед;
.
Было:
#include <iostream> // Хорошо
#include <cmath> // Плохо
auto foo (int x ) -> int {
return x;
}
template < typename T >
T bar( T x) {
return x;
}
struct Struct {
int a;
double b ; }
int main( ) {
int x = bar ( 1 );
return foo ( 41 ) + x ;
}
Стало:
#include <iostream> // Хорошо
#include <cmath> // Плохо
auto foo (int x) -> int {
return x;
}
template <typename T>
T bar(T x) {
return x;
}
struct Struct {
int a;
double b; }
int main() {
struct Struct s
int x = bar (1);
return foo (41) + x;
}
По идее, пункты 2 и 3 должно быть можно объединить, но мне лень, да и так проще и понятнее. Еще выравнивание индентации можно было бы накостылять, но мне тоже лень. Попробую сейчас переписать на sed.
Исправление Siborgium, :
Развлечения ради набросал решение на регулярках vis:
:y/^\s+/ x/[\ \t]+/ c/ /
– заменить все последовательности пробелов/табов, не начинающиеся с начала строки, одиночными пробелами.:x/[[(<]\s/ x/\s/ d
– удалить пробелы после открывающихся скобок.:x/\s[])>]/ x/\s/ d
– удалить пробелы перед закрывающимися скобками.:x/\s+;/ x/\s+/ d
– удалить пробелы перед;
.
Было:
#include <iostream> // Хорошо
#include <cmath> // Плохо
auto foo (int x ) -> int {
return x;
}
template < typename T >
T bar( T x) {
return x;
}
struct Struct {
int a;
double b ; }
int main( ) {
int x = bar ( 1 );
return foo ( 41 ) + x ;
}
Стало:
#include <iostream> // Хорошо
#include <cmath> // Плохо
auto foo (int x) -> int {
return x;
}
template <typename T>
T bar(T x) {
return x;
}
struct Struct {
int a;
double b; }
int main() {
struct Struct s
int x = bar (1);
return foo (41) + x;
}
По идее, пункты 2 и 3 должно быть можно объединить, но мне лень, да и так проще и понятнее. Еще выравнивание в структуре можно было бы накостылять, но мне тоже лень. Попробую сейчас переписать на sed.
Исходная версия Siborgium, :
Развлечения ради набросал решение на регулярках vis:
:y/^\s+/ x/[\ \t]+/ c/ /
– заменить все последовательности пробелов/табов, не начинающиеся с начала строки, одиночными пробелами.:x/[[(<]\s/ x/\s/ d
– удалить пробелы после открывающихся скобок.:x/\s[])>]/ x/\s/ d
– удалить пробелы перед закрывающимися скобками.:x/\s+;/ x/\s+/ d
– удалить пробелы перед;
.
Было:
#include <iostream> // Хорошо
#include <cmath> // Плохо
auto foo (int x ) -> int {
return x;
}
template < typename T >
T bar( T x) {
return x;
}
struct Struct {
int a;
double b ; }
int main( ) {
int x = bar ( 1 );
return foo ( 41 ) + x ;
}
Стало:
include <iostream> // Хорошо
#include <cmath> // Плохо
auto foo (int x) -> int {
return x;
}
template <typename T>
T bar(T x) {
return x;
}
struct Struct {
int a;
double b; }
int main() {
struct Struct s
int x = bar (1);
return foo (41) + x;
}
По идее, пункты 2 и 3 должно быть можно объединить, но мне лень, да и так проще и понятнее. Еще выравнивание в структуре можно было бы накостылять, но мне тоже лень. Попробую сейчас переписать на sed.