2015-07-11 4 views
11

Ich verwende vim-autoformat, die clang-format als externen Formatierer verwendet.Wie konnte ich C++ - Pragma im Clang-Format einrücken?

Es scheint, dass clang-format die C++ #pragma nicht einrücken wird. Zum Beispiel:

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

würde Ich mag es haben, formatiert in:

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

I clangformat geprüft, aber nicht finden, welche Option ich verwenden könnte.

+0

Vielleicht, weil traditionell Präprozessordirektiven * * in der ersten Spalte der Zeile beginnen mussten? –

+0

[Relevanter Fehlerbericht] (https://llvm.org/bugs/show_bug.cgi?id=17362). – rettichschnidi

Antwort

1

Es ist spät, aber das ist die Lösung, die Sie suchen. Es formatiert das Pragma zusammen mit dem Codeblock.

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

Das Hauptkonzept ersetzt die Zeichenfolge, so dass die Formatierer „richtige“ Regeln auf diesem Pragmas verwendet. Das Motivationsbeispiel ist wie folgt.

# 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

Danke für Ihre Antwort. Bitte fügen Sie die relevanten Teile des Codes in Ihre Antwort ein. – perigon