Скажите clang-format игнорировать прагмы

clang-format в настоящее время перемещает все прагмы в первый столбец. Пример до clang-формата:

for (int i = 0; i < 4; ++i) {
  #pragma UNROLL
  // ...some code...
}

Тот же код после clang-формата:

for (int i = 0; i < 4; ++i) {
#pragma UNROLL
  // ...some code...
}

Есть ли способ заставить clang-format полностью игнорировать строки прагмы без изменения исходного кода (т.е. без загромождения источника с помощью // clang-format off)? Например с регулярным выражением?

Это связано с этим вопросом (я бы хотел избежать установка стороннего инструмента) и, надеюсь, будет решена с помощью этот отчет об ошибке.


Кроме того, в то время как clang-format off соблюдается для строки с прагмой, закомментированная строка сама будет иметь отступ до того, что прагма имела бы отступ (с clang-format 6.0. 0):

for (int i = 0; i < 4; ++i) {
// clang-format off
  #pragma UNROLL
  // clang-format on
  // ...some code...
}

person jlicht    schedule 06.02.2018    source источник


Ответы (1)


Это может быть ответ, который вы ищете:

https://github.com/MedicineYeh/p-clang-format

Вот строки, которые могут вам помочь:


    # Replace "#pragma omp" by "//#pragma omp"
    sed -i 's/#pragma omp/\/\/#pragma omp/g' ./main.c
    # Do format
    clang-format ./main.c
    # Replace "// *#pragma omp" by "#pragma omp"
    sed -i 's/\/\/ *#pragma omp/#pragma omp/g' ./main.c

person Filip    schedule 10.12.2019