2012-04-20 14 views
11

क्या एक्सकोड को स्वरूपित कोड को दोबारा सुधारने का कोई तरीका नहीं है, या क्या ऐसा कोई उपकरण है जो अनिश्चितता है जो ब्लॉक कोड का उपयोग करने वाले स्रोत कोड को प्रारूपित कर सकता है?ब्लॉक और एक्सकोड के साथ नई लाइनों पर ब्रेसिज़ के साथ स्रोत कोड कैसे प्रारूपित करें?

उद्देश्य-सी में ब्लॉक के साथ, कोड पढ़ने के लिए मुश्किल हो गया है। एक समाधान ब्लॉक परिभाषा लिखने और नई लाइनों पर घुंघराले ब्रेसिज़ डाल दिया, इस तरह के लिए है:

dispatch_async(dispatch_get_global_queue(0, 0), ^(void) 
{ 
    //block of code 
}); 

और:

[dictionary enumerateKeysAndObjectsUsingBlock:^(id key, id value, BOOL *stop) 
{ 
    //block of code 
}]; 

सुंदर और आसान!

लेकिन एक्सकोड इस प्रारूप को संरक्षित नहीं करता है, और मुझे इस तरह आउटपुट कोड को अविश्वसनीय बनाने का कोई तरीका नहीं मिल रहा है। Uncrustify वास्तव में अच्छा है, लेकिन शायद ब्लॉक बहुत नए हैं?

कोई विचार?

[अस्वीकरण: मुझे पता है कि यह "ट्रोल घंटा" में बदल सकता है, लेकिन कोड जितना संभव हो सके पढ़ने के लिए आसान होना चाहिए, और उसी कॉलम पर ब्रेसिज़ होने से चीज़ें और अधिक स्पष्ट हो जाती हैं (मेरे लिए)। विशेष रूप से यदि आपके पास ब्लॉक के भीतर कई ब्लॉक हैं। इसलिए यदि आपको इस तरह दिखने वाले कोड पसंद नहीं हैं, तो कृपया प्रश्न को अनदेखा करने का प्रयास करें।]

+0

मुझे पैरामीटर के भीतर कोड ब्लॉक स्वरूपण के साथ समस्याएं भी हैं।मैं^^( – Biclops

+2

नहीं के बाद कोड और कोष्ठक के इंडेंटेशन को संशोधित करने के लिए सेटिंग्स नहीं ढूंढ पा रहा हूं, नहीं, इसके लिए बस कोई सेटिंग नहीं है। हालांकि, छोटे ब्लॉक का उपयोग करते समय xCode समझता है कि यदि आप पहले '^ (शून्य) 'और फिर दर्ज करें, निम्नलिखित ब्रैकेट सही ढंग से रखे जाएंगे। –

+3

गिटहब से अविश्वसनीयता के नवीनतम संस्करण को बनाने का प्रयास करें। इसमें पुराने संस्करण जारी किए गए संस्करण 0.5 9 में बहुत अधिक सुधार किए गए ब्लॉक हैं। – nschum

उत्तर

3

नवीनतम (लगभग 2 महीने पुराना या तो) अद्यतन अविश्वसनीय करने के लिए लगभग समस्या हल करता है। बस अपने कॉन्फ़िग फ़ाइल में निम्न आइटम सेट करें: (। मैं indent_with_tabs = 0 इस्तेमाल किया क्योंकि मैं could't यह टैब के साथ काम करने के लिए मिलता है शायद आवश्यक नहीं।)

indent_oc_block       = true 
indent_with_tabs       = 0   
indent_columns       = 4  # set to the same as indent_switch_case 
indent_switch_case      = 4  # set to the same as indent_columns 

और निश्चित रूप से, नए के लिए लाइन के बाद/पहले {} जिसे आप nl_some_parameter_brace से "बल" के लिए चाहते हैं सेट करें। किसी को यह उचित रूप से नई लाइनें डालने बनाने के लिए एक तरह से मिलते हैं तो

dispatch_async(dispatch_get_global_queue(0, 0), ^(void) { 
    //code 
} 

:

अब uncrustify अपने कोड संभाल लेंगे, यह आप के लिए ब्लॉक में नई लाइनें डालने नहीं होगा, इस तरह कोड बदसूरत बना रहेगा , कृपया मुझे बताओ।

धन्यवाद @ipmcc अविश्वास पर अद्यतन के लिए धन्यवाद।

संपादित करें: हां, जब भी आप कॉपी/पेस्ट करते हैं तो xCode कोड को obfuscates करता है। मैं वर्कफ़्लो को कम करने के लिए इस महान xCode प्लगइन का उपयोग करता हूं: https://github.com/benoitsan/BBUncrustifyPlugin-Xcode

संपादित करें 2: Uncrustify नेस्टेड ब्लॉक को बहुत अच्छी तरह से संभाल नहीं करता है (अभी भी एक्सकोड से बेहतर)। उदाहरण के लिए, नेस्टेड ब्लॉक बन जाते हैं:

dispatch_async(dispatch_get_global_queue(0, 0), ^(void) 
{ 
    [array enumerateObjectsUsingBlock:^(id object, NSUInteger index, BOOL *stop) 
     { 
      [array enumerateObjectsUsingBlock:^(id object, NSUInteger index, BOOL *stop) 
       { 
        NSLog(@"the pumpkin pie!"); 
       }]; 
     }]; 
}); 
-1

एक्सकोड स्वत: पूर्णता के लिए "कोड स्निपेट" में निर्मित उपयोग करता है। लाइब्रेरी फलक में {} आइकन पर क्लिक करके कोड स्निपेट लाइब्रेरी खोलें। आप XCode के भीतर सीधे स्निपेट संपादित नहीं कर सकते हैं, लेकिन ऐप SnippetEdit आपको उन्हें संपादित करने की अनुमति देता है।

मेरा सुझाव है कि आप उन्हें संपादित करने से पहले 'codenippets' फ़ाइल का बैकअप लें। यह /Applications/Xcode.app/Contents/PlugIns/IDECodeSnippetLibrary.ideplugin/Contents/Resources/SystemCodeSnippets.codesnippets

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