2015-07-11 44 views
11

我正在使用vim-autoformat,它使用clang-format作爲外部格式化程序。如何使用clang格式縮進C++雜注?

看來clang-format不會縮進C++ #pragma。例如:

#include <omp.h> 
#include <cstdio> 
int main() 
{ 
#pragma omp parallel for 
    for (int i = 0; i < 10; ++i) 
    { 
     puts("demo"); 
    } 
    return 0; 
} 

我想有它格式化成:

#include <omp.h> 
#include <cstdio> 
int main() 
{ 
    #pragma omp parallel for 
    for (int i = 0; i < 10; ++i) 
    { 
     puts("demo"); 
    } 
    return 0; 
} 

我檢查clangformat,但沒有找到,我可以使用的選項。

+0

也許是因爲傳統上預處理器指令*有*要從行的第一列開始? –

+0

[相關錯誤報告](https://llvm.org/bugs/show_bug.cgi?id=17362)。 – rettichschnidi

回答

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 
+0

感謝您的回答。請在答案中包含代碼的相關部分。 – perigon