2010-01-20 15 views
27

कई वैकल्पिक Emacs स्वत: पूर्णता तंत्र दिखाई देता है। एक विस्तृत खोज के बिना, निम्नलिखित दिमाग में आते हैं: आईडीओ, ऑटो-पूर्ण, आईकिकल्स, बफर पूर्ण करने में, मिनीबफर पूर्णता और बॉक्स पूरा होने के मानक। और फिर कोड पूरा हो रहा है। इसकी बहुत सारी। और इसमें से अधिकांश भाषा निर्भर है। Emacs गुरु, या तीन होने के लिए यह बहुत उपयोगी होगा, दोनों कोड और गैर-कोड स्वत: पूर्णता में प्रमुख खिलाड़ियों के लाभों को सारांशित करें। और यह स्टैक ओवरफ़्लो है, यह बिना कहने के चला जाता है कि ऑटो समापन मोड की पहचान करना अच्छा होगा जो Emacs के IDE-like तंत्र के लिए सबसे अच्छा काम करता है।Emacs समापन मोड विकल्पों से बाहर निकलना

अद्यतन: मैं बस the Emacs Wiki completion page की खोज की है जो मेरे मूल प्रश्न बढ़ाता है: इन सभी विकल्पों की, क्या अच्छा है, क्या कम अच्छा है और यदि आप केवल 2-3 के साथ खेल सकते है जो आप की सिफारिश करेंगे?

उत्तर

7

मैं आम तौर पर दो समापन पैकेज (मिनीबफर और कॉमंट बफर में अंतर्निहित टैब पूर्ण होने के अलावा) का उपयोग करता हूं।

pabbrev.el - जो कर्सर पर एक सुझाव प्रदान करता है (टैब दबाएं) स्वीकार करने के लिए। विकल्प शब्द आवृत्ति को देखकर किए जाते हैं। मुझे यह पसंद आएगा कि दृश्य पूर्ण होने के कारण - लेकिन यह ज्यादातर केवल एक पूर्णता के लिए काम करता है।

hippie-expand - जो आम तौर पर dabbrev के स्थान पर एम/ के लिए बाध्य है क्योंकि यह सब है कि dabbrev करता है और अधिक करता है। यह तब अच्छा काम करता है जब आपको कुछ विकल्पों के माध्यम से चक्र की आवश्यकता हो सकती है, या यदि आप एक फ़ाइल नाम या कुछ और पूरा करना चाहते हैं।

मुझे दोनों पसंद है क्योंकि उन्हें किसी भी माउस आंदोलन की आवश्यकता नहीं है और जल्दी से काम नहीं करते हैं।

4

मैं फ़ाइल नामों के लिए मिनीबफर में मानक टैब पूर्णता का उपयोग करता हूं, M-x आदेश और अन्य चीजें।

मैं आपके किसी भी Emacs बफर में किसी भी शब्द के गतिशील समापन के लिए अक्सर M-/ कीस्ट्रोक (dabbrev-expand) का उपयोग करता हूं। यह शानदार है, खासकर लंबे परिवर्तनीय नामों के लिए। यहाँ प्रलेखन है:

 
M-/ runs the command dabbrev-expand, which is an interactive 
autoloaded Lisp function in `dabbrev.el'. 

It is bound to M-/. 

(dabbrev-expand ARG) 

Expand previous word "dynamically". 

Expands to the most recent, preceding word for which this is a prefix. 
If no suitable preceding word is found, words following point are 
considered. If still no suitable word is found, then look in the 
buffers accepted by the function pointed out by variable 
`dabbrev-friend-buffer-function'. 

A positive prefix argument, N, says to take the Nth backward *distinct* 
possibility. A negative argument says search forward. 

If the cursor has not moved from the end of the previous expansion and 
no argument is given, replace the previously-made expansion 
with the next possible expansion not yet tried. 

The variable `dabbrev-backward-only' may be used to limit the 
direction of search to backward if set non-nil. 

See also `dabbrev-abbrev-char-regexp' and C-M-/. 
4

आप, कंपनी-मोड या स्वत: पूर्ण पैकेज के लिए देख सकते हैं कि CEDET सहित विभिन्न पूरा होने के सूत्रों का कहना है, इस्तेमाल कर सकते हैं, और वे भी कुछ प्रोग्रामिंग भाषाओं के लिए नई पूरा होने के सूत्रों का कहना है परिभाषित करने के लिए ... अनुमति देते हैं , आप सीधे सीईडीईटी का उपयोग कर सकते हैं ...

+2

शायद आप का अर्थ है http://cx4a.org/software/auto-complete/index.html, अजीब किसी ने इसका उल्लेख नहीं किया है। यह मेरे अनुभव में सबसे अच्छा है। – VitoshKa

+0

हां, मेरा मतलब यह पैकेज है - मैं हमेशा भूल जाता हूं जिसमें '-' चिह्न होता है और जो नहीं ;-) –

8

WRT Icicles -

अधिकांश भाग के लिए, icicles के बारे में minibuffer पूरा होने है। ऐसे कुछ मामले हैं जहां यह इन-बफर (उदा। कोड) पूर्ण करने के लिए कुछ प्रदान करता है, लेकिन यह मुख्य रूप से मिनीबफर पूर्ण होने के बारे में है।

जब अधिकांश लोग मिनीबफर पूरा करने के बारे में सोचते हैं तो वे फ़ाइल-नाम पूर्ण होने, बफर-नाम पूर्ण होने और कमांड-नाम पूर्ण होने के बारे में सोचते हैं। लेकिन इसमें लॉट अधिक है।

एक Emacs-Lisp प्रोग्रामर के रूप में, आप जहां भी आप उपयोगकर्ताओं को एक विकल्प को अंतःक्रियात्मक रूप से देना चाहते हैं, पूरा करने का उपयोग कर सकते हैं। यह बहुत सामान्य है!

पूर्णता पैटर्न सेट को परिभाषित करने के लिए पैटर्न-मिलान है, जिसे आप फिर से जोड़ सकते हैं।

ज्यादातर लोग सोचते हैं कि मिनीबफर पूर्ण होने का एकमात्र उद्देश्य एक ही नाम (फ़ाइल, बफर, कमांड, चर, ...) चुनना है। लेकिन पूरा होने की शक्ति वास्तव में फिल्टर करने के लिए है और संभवतः फ़ाइल नामों, बफर नामों आदि के पूर्ण सेट को अलग-अलग तरीकों से सॉर्ट करें, और फिर उपयोगकर्ताओं को सेट (आवश्यक रूप से एक ऑब्जेक्ट नहीं) के साथ कुछ करने के लिए अनुमति दें। ।

है यही कारण है कि Icicles बारे में है: इसकी सूचना देने के गतिशील (संवर्द्धित) सेट का उपयोग कर परिभाषित पैटर्न मिलान, और फिर चयनित सदस्यों या उन सेट के सभी सदस्यों पर काम करते हैं।

यह नहीं इतना का उद्देश्य Ido या अन्य पूरा होने के संकुल, पतवार (कुछ भी) के संभावित अपवाद के साथ है।

Helm (Anything) के विपरीत, जो विशेषाधिकार इसके प्रारंभिक बिंदु के रूप में वस्तु प्रकारों पर नाम और कार्यों, Icicles में आप आम तौर पर एक कमांड किसी दिए गए प्रकार में से एक या अधिक वस्तुओं के लिए कुछ करने के लिए वस्तु (जैसे बफर), और फिर आप उन वस्तुओं के सेट को सीमित करते हैं, आमतौर पर नाम-मिलान से। यह अक्सर Icicles में मामला है कि आप उन वस्तुओं पर एक ही कमांड के भीतर कई लेकिन संबंधित तरीकों से कार्य कर सकते हैं।

पतवार (कुछ भी), सामान्य अपने इनपुट में में ऑब्जेक्ट नाम द्वारा सबसे पहले मिलने वाला सभी प्रकार की वस्तुओं का सम्पूर्ण ब्रह्माण्ड के खिलाफ है, और बाद में आप को कम करने के लिए कुछ आपरेशन (रों) लेने के लिए।

अंत में, ध्यान रखें कि विभिन्न समापन दृष्टिकोण प्रत्येक प्रोग्रामर के लिए अंतिम उपयोगकर्ताओं और कुछ (जैसे पूर्णता सुविधाएं) के लिए कुछ (उदा। कमांड) प्रदान करता है।

आप कोड पूरा होने कर रहे हैं तो आप आम तौर पर सिर्फ बिंदु पर नाम को पूरा करना चाहते हैं। कोड पूर्ण होने के बारे में दिलचस्प बात यह है कि उपयुक्त उम्मीदवार क्या हैं। इसके लिए, पाठ (उदा। कोड) संदर्भ आम तौर पर सभी महत्वपूर्ण है। स्मार्ट विकल्पों की पेशकश करने के लिए, समापन सुविधा को संदर्भ (कोड) का विश्लेषण करने की आवश्यकता है, जिसमें किसी भी विस्तृत संदर्भ (जैसे प्रोजेक्ट कोड) शामिल हैं।

दूसरी तरफ मिनीबफर पूरा करने के लिए किसी भी प्रकार की पसंद और कार्रवाई के लिए उपयोग किया जा सकता है, जिसमें कई क्रियाओं के साथ कई विकल्प शामिल हैं। यहां, सभी भाग दिलचस्प हैं: उम्मीदवार क्या पेशकश कर सकते हैं, आप उनके साथ क्या कर सकते हैं, आदि

डुनो चाहे वह मदद करता है, लेकिन यह वैसे भी मेरा लेना है।

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