2015-07-11 74 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