2015-07-11 8 views
11

मैं vim-autoformat का उपयोग कर रहा हूं, जो बाहरी फॉर्मेटर के रूप में clang-format का उपयोग करता है।क्लैंग-प्रारूप का उपयोग करके मैं सी ++ प्रगति कैसे इंडेंट कर सकता हूं?

ऐसा लगता है कि clang-format सी ++ #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

मुख्य अवधारणा स्ट्रिंग की जगह ताकि फ़ॉर्मेटर इन pragmas पर 'सही' नियम का उपयोग करता है। प्रेरक उदाहरण निम्नानुसार है।

# 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

संबंधित मुद्दे

 संबंधित मुद्दे