2011-10-11 6 views
7

मैं पिछलेको अनावश्यक (एक स्रोत कोड ब्यूटीफायर) को कॉन्फ़िगर करने की कोशिश कर रहा हूं, जो पिछले खुले कोष्ठक के नीचे संरेखित करने से बचें।खुले कोष्ठक के तहत संरेखित किए बिना अविश्वास का उपयोग

void f(void) 
{ 
    while (one && 
     two) 
    { 
     continue; 
    } 
} 

जब मैं ऊपर कोड पर uncrustify चलाने के लिए, लाइन लाइन से ( से तालमेल two) इंडेंट: उदाहरण के लिए, मैं (फ़ाइल indent_paren.c से) इस तरह देखने के लिए कोड पाना चाहते हैं इसके बाद के संस्करण:

void f(void) 
{ 
    while (one && 
      two) 
    { 
     continue; 
    } 
} 

मैं स्रोत से संकलित uncrustify का नवीनतम संस्करण (0.59) का उपयोग कर रहा हूँ, इस परीक्षण (फ़ाइल indent_paren.cfg में) के लिए निम्नलिखित विन्यास सेटिंग्स के साथ:

indent_with_tabs = 0 
indent_columns = 4 
indent_paren_nl = false 
indent_bool_paren = false 

मैं के रूप में uncrustify लागू कर रहा हूँ इस प्रकार है:

uncrustify -c indent_paren.cfg indent_paren.c 

मैं संस्करण 0.56 (उबंटू 11.04 के लिए रिपोजिटरी से स्थापित) के साथ एक ही व्यवहार का पता चला। क्या मैं गलत कॉन्फ़िगरेशन सेटिंग्स का उपयोग कर रहा हूं, या यहां कुछ और गलत है? किसी भी मदद के लिए धन्यवाद।

उत्तर

9

आगे प्रयोग और uncrustify स्रोत कोड में spelunking के बाद, मैं पाया है कि indent_continue विकल्प मैं ज्यादातर क्या चाहते है। डिफ़ॉल्ट रूप से, indent_continue शून्य है, और ऊपर की रेखा में खुली कंस्ट्रैसिस के नीचे जारी पंक्तियों को इंडेंट किया गया है। indent_continue को गैर-शून्य मान पर सेट करना इस व्यवहार को ओवरराइड करता है, जिससे निरंतरता रेखाएं वर्तमान "स्तर" के आधार पर इंडेंट की जाती हैं। जब uncrustify.cfg में निम्नलिखित सेटिंग्स का उपयोग कर के रूप में वांछित तो अपने मूल उदाहरण इंडेंट है:

indent_with_tabs = 0 
indent_columns = 4 
indent_continue = 4 

क्योंकि "स्तर" नेस्टेड कोष्ठकों के लिए वृद्धि की जाती है, तथापि, वहाँ अधिक खरोज मामलों में इस तरह के लिए वांछित से है इस प्रकार

void g(void) 
{ 
    /* Nested parentheses cause undesired additional indent. */ 
    TRACE(("The varargs need extra parentheses %d %d\n", 
     (firstArgIsLong + 
     withMultipleTerms), 
     secondArg)); 
} 

उपरोक्त रूपरेखाओं खरोज उत्पन्न, खरोज की अवांछित अतिरिक्त स्तर के साथ: रूप

void g(void) 
{ 
    /* Nested parentheses cause undesired additional indent. */ 
    TRACE(("The varargs need extra parentheses %d %d\n", 
      (firstArgIsLong + 
       withMultipleTerms), 
      secondArg)); 
} 

अविश्वास स्रोत को देखते हुए, ऐसा लगता है कि यह व्यवहार समायोज्य नहीं है। indent_continue अधिकतर मामलों में वांछित परिणाम देता है, और ऐसा लगता है कि अविश्वसनीय है कि इस समय आ सकता है।

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