LINUX.ORG.RU

История изменений

Исправление Siborgium, (текущая версия) :

Развлечения ради набросал решение на регулярках vis:

  1. :y/^\s+/ x/[\ \t]+/ c/ / – заменить все последовательности пробелов/табов, не начинающиеся с начала строки, одиночными пробелами.
  2. :x/[[(<]\s/ x/\s/ d – удалить пробелы после открывающихся скобок.
  3. :x/\s[])>]/ x/\s/ d – удалить пробелы перед закрывающимися скобками.
  4. :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:

  1. :y/^\s+/ x/[\ \t]+/ c/ / – заменить все последовательности пробелов/табов, не начинающиеся с начала строки, одиночными пробелами.
  2. :x/[[(<]\s/ x/\s/ d – удалить пробелы после открывающихся скобок.
  3. :x/\s[])>]/ x/\s/ d – удалить пробелы перед закрывающимися скобками.
  4. :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:

  1. :y/^\s+/ x/[\ \t]+/ c/ / – заменить все последовательности пробелов/табов, не начинающиеся с начала строки, одиночными пробелами.
  2. :x/[[(<]\s/ x/\s/ d – удалить пробелы после открывающихся скобок.
  3. :x/\s[])>]/ x/\s/ d – удалить пробелы перед закрывающимися скобками.
  4. :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.