2011-02-25 13 views
24

पर खोलने वाली ब्रेस के साथ एक्सकोड 4 ऐसा लगता है कि नया एक्सकोड 4 अब XCCodeSenseFormattingOptions लागू नहीं करता है। मेरे लिए कम से कम :(नई लाइन

वैसे भी, क्या आप जानते हैं कैसे Xcode 4 में स्वतः पूर्णता के लिए नई लाइन को खोलने ब्रेस डाल करने के लिए करते हैं? मैं टर्मिनल में इस टाइप करने के लिए प्रयोग किया जाता है, लेकिन यह नई Xcode के लिए काम नहीं करता।

आप देख सकते हैं कोड:
defaults write com.apple.Xcode XCCodeSenseFormattingOptions -dict BlockSeparator "\\n" PreMethodDeclSpacing "" 
+0

मुझे एक ही समस्या है। – David

+0

सच ... एक ही समस्या – xpepermint

+0

मैंने यहां एक समान प्रश्न का उत्तर दिया: (इसके लिए एक ऐप है!) http://stackoverflow.com/questions/4963034/xcode-built-in-snippets-edit/11135963#11135963 – Cocoaholic

उत्तर

4

वहाँ Xcode 4 में यह करने के लिए file a bug कृपया कोई रास्ता नहीं XCode 4 का उपयोग करता है "कोड के टुकड़े" स्वतः पूर्ण करने के लिए, और एक अंतर्निहित उनमें से पुस्तकालय के साथ जहाजों है

+0

इसे बग रिपोर्टर में नहीं मिला, इसलिए मैंने एक बग फाइल किया - 10613842 –

29

। लाइब्रेरी फलक में { } आइकन पर क्लिक करके स्निपेट लाइब्रेरी, जो शायद आपके मुख्य एक्सकोड के निचले दाएं हाथ पर है ई खिड़की

XCode 4 के अंतर्निहित कोड के टुकड़े के सभी बयान के रूप में एक ही लाइन पर उद्घाटन ब्रेस डाल - इस XCode 4 की एक if बयान के लिए कोड का टुकड़ा है, उदाहरण के लिए:

if (<#condition#>) { 
    <#statements#> 
} 

तो अगर आप चाहते थे XCode 4 इसलिए की तरह स्वत: पूर्ण कर रहे हैं:

if (<#condition#>) 
{ 
    <#statements#> 
} 

... तो आप तदनुसार कोड स्निपेट संपादित करना होगा। यह बदले में, दो समस्याओं का कारण बनता है:

  1. एक्सकोड 4 में निर्मित 44 कोड स्निपेट हैं, और आपको प्रत्येक को अलग से संपादित करना होगा।
  2. एक्सकोड 4 आपको अंतर्निहित कोड स्निपेट को संपादित करने की अनुमति नहीं देगा।

इन समस्याओं के सरल defaults write आदेश XCode 3 में काम किया और अधिक से अधिक चुनौतीपूर्ण हैं - लेकिन अगर आप निर्धारित कर रहे हैं यह संभव है, और आप संपत्ति सूचियों को संपादित कर सकते, XCode 4 और की हिम्मत में तल्लीन इन कोड स्निपेट को एक-एक करके बदलें।

/Developer/Library/Xcode/PrivatePlugIns/IDECodeSnippetLibrary.ideplugin/Contents/Resources/SystemCodeSnippets.codesnippets में अंतर्निहित कोड स्निपेट के एक्सकोड 4 की लाइब्रेरी शामिल है। यह शायद कहने के बिना चला जाता है, लेकिन आपको चार्ज करने और संपादन करने से पहले इस फ़ाइल का बैकअप बनाना चाहिए - और बाद में आपको एक और बैकअप बनाना चाहिए, और फ़ाइल की प्रतिलिपि को अपने नए और बेहतर कोड स्निपेट से अलग करना चाहिए, क्योंकि आप जब आप एक्सकोड 4 की अगली रिलीज को इंस्टॉल करते हैं तो लगभग निश्चित रूप से /Developer/Library/Xcode की सामग्री को ओवरराइट करें (यह भी संभव है कि ऐप्पल इस फ़ाइल के प्रारूप को बदल देगा, नए कोड स्निपेट्स को जोड़ देगा, या ऐसी कई अन्य चीजें करें जो इस उत्तर को अप्रभावी प्रदान कर सकें।)

यदि आपके पास एक्सकोड 4.3 या बाद में सीधे ऐप स्टोर से स्थापित है, तो सबकुछ Xcode.app बंडल के अंदर है। SystemCodeSnippets.codesnippets का पथ /Applications/Xcode.app/Contents/PlugIns/IDECodeSnippetLibrary.ideplugin/Contents/Resources/SystemCodeSnippets.codesnippets है।

किसी भी तरह, आप मिल जाएगा ऊपर फ़ाइल इस तरह कई प्रविष्टियों शामिल:

<dict> 
    <key>IDECodeSnippetVersion</key> 
    <integer>1</integer> 
    <key>IDECodeSnippetCompletionPrefix</key> 
    <string>if</string> 
    <key>IDECodeSnippetContents</key> 
    <string>if (&lt;#condition#&gt;) { 
    &lt;#statements#&gt; 
}</string> 
    <key>IDECodeSnippetIdentifier</key> 
    <string>D70E6D11-0297-4BAB-88AA-86D5D5CBBC5D</string> 
    <key>IDECodeSnippetLanguage</key> 
    <string>Xcode.SourceCodeLanguage.C</string> 
    <key>IDECodeSnippetSummary</key> 
    <string>Used for executing code only when a certain condition is true.</string> 
    <key>IDECodeSnippetTitle</key> 
    <string>If Statement</string> 
    <key>IDECodeSnippetCompletionScopes</key> 
    <array> 
     <string>CodeBlock</string> 
    </array> 
</dict> 

यह एक if बयान को स्वतः पूर्ण के लिए कोड का टुकड़ा है। एक नई लाइन पर उद्घाटन ब्रेस डालने के लिए IDECodeSnippetContents संपादित करें, अपना काम सहेजें, और फिर XCode 4 को पुनरारंभ करें; अगर सब ठीक हो जाए, तो आपको if कथन टाइप करने और परिणामों को देखने में सक्षम होना चाहिए।

आपको कम से कम आधा दर्जन से अधिक संपादन सबसे आम पूर्ण हो जाता है कवर करने के लिए करने की आवश्यकता होगी (for, while, आदि), और आप पूरी तरह से इसे कहीं लगभग 40 अलग संपादन ले लेंगे होना चाहते हैं। यह बहुत काम है, लेकिन यदि आप वास्तव में, वास्तव में चाहते हैं कि आपके शुरुआती ब्रेसिज़ को एक अलग लाइन पर रखने के लिए एक्सकोड 4 का स्वत: पूर्णता हो, तो यह किया जा सकता है।

+0

और रेगेक्स है ... – Ziggy

+10

एक ऐसा ऐप है जिसका उपयोग आप कोड स्निपेट को प्रबंधित और संपादित करने के लिए कर सकते हैं, जिसे [स्निपेट एडिट] (http : //cocoaholic.com/snippet_edit)। स्निपेट प्रबंधन से बहुत दर्द होता है। – epologee

+1

ध्यान दें कि स्निपेट संपादित $ 8 – arolson101

2

बस एक उपयोगकर्ता कोड छीन लिया जो ऐप्पल के संस्करण को ओवरराइड करता है। इसे पूर्ण शॉर्टकट फ़ील्ड में दर्ज करके डिफ़ॉल्ट नाम के समान नाम दें। Xcode 4.2 यहाँ http://s3.amazonaws.com/screencasts.pragmaticstudio.com/017_custom_code_snippets.mov

2

चेक बाहर मेरी संशोधित (प्रणाली चौड़ा) के टुकड़े: एक howto के लिए इस वीडियो को देखो

http://forrst.com/posts/Put_that_where_it_belongs_Xcode-PNL

यह iOS के लिए सभी प्रासंगिक उद्घाटन घुंघराले ब्रेसिज़ का ध्यान रखना चाहिए विकास ..

+0

संशोधित फ़ाइल Sveinung प्रदान करने के लिए धन्यवाद! पेस्ट कॉपी करें और मैंने जो परीक्षण किया है उससे सब ठीक काम कर रहा है। (xCode 4.5b) –

+0

कूल, यह जानकर अच्छा लगा कि 4.5 अभी भी इस "हैक" का समर्थन करता है। –

+0

मुझे इसे/अनुप्रयोग /Xcode.app/Contents/PlugIns/IDECodeSnippetLibrary.ideplugin/Contents/Resources/SystemCodeSnippets.codesnippets में रखना था, लेकिन यह xcode 4.4 – arolson101

2

एक्सकोड 4.3.1 में, यदि आप टर्मिनल से सूडो के रूप में निम्न फ़ाइल को संपादित करते हैं, जैसे स्कॉट फोर्ब्स ऊपर वर्णित है, तो आप कहां खोल सकते हैं कि उद्घाटन ब्रेस कहां दिखाई देता है। यह एक्सकोड के नए इंस्टॉलेशन के साथ चलेगा, मैं कल्पना करूंगा, इसलिए मैं वोट दूंगा कि यह ऐप्पल के साथ भी एक बग है।

/Applications/Xcode.app/Contents/PlugIns/IDECodeSnippetLibrary.ideplugin/Contents/Resources/SystemCodeSnippets.codesnippets

लेस्ली

2

मैं Xcode4 के लिए SnippetEdit का इस्तेमाल किया और यह आश्चर्यजनक काम करता है। यह मूल रूप से आपको अपने द्वारा परिभाषित नए लोगों के साथ एक्सकोड द्वारा दिए गए पुराने स्निपेट को प्रतिस्थापित करने देता है। यहां और देखें: https://www.macupdate.com/app/mac/43352/snippet-edit

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