@ डग का उत्तर थोड़ा पुराना है और उनका ध्यान पूर्व-परिभाषित स्निपेट का उपयोग करके कोड विस्तार पर है।
मुझे लगता है कि ओपी का सवाल इंटेलीसेन्स (उदाहरण के लिए एक वर्ग का ऑटो पूरा विधि नाम) के बारे में है।
हिप्पी का विस्तार लोकप्रिय होने के लिए किया जाता है, सिंटैक्स विश्लेषक इमैक टैग है । तो यह सभी भाषाओं का समर्थन करता है ctags का समर्थन करता है (C ++ all जावा सहित)। लेकिन परिणाम सही नहीं है क्योंकि सीटीजी केवल कोड का विश्लेषण करने के लिए नियमित अभिव्यक्ति का उपयोग करता है। विवरण के लिए मेरे init-hippie-Expand.el देखें। आप के मूल्य की जाँच करके शुरू कर सकते हैंhippie-expand-try-functions-list
ऑटो-कम्प्लीट एक आधुनिक है जिसमें फैंसी UI (ड्रॉपडाउन मेनू, कंसोल विंडो में भी) है। यदि आप एक बैकएंड के रूप में क्लैंग का उपयोग करते हैं । अंतर्मुखी बहुत बेहतर है। क्लैंग को काम करने के लिए, आपको ऑटो-कंप्लीट-क्लैंग इंस्टॉल करना होगा जो कि ऑटो-कम्प्लीट का प्लगइन है। यह केवल भाषा क्लैंग सपोर्ट (C / C ++ / Obj-C) का समर्थन करता है। जैसा कि सिल्वेन बेनर ने कहा है, आप ईएसीएस-एक्लेमिम का उपयोग कर सकते हैं क्योंकि जावा बैक बैक के रूप में होता है जो वास्तव में ग्रहण के निष्पादन योग्य कहता है। तो ऑटो-पूरा जावा का समर्थन कर सकता है। विवरण के लिए मेरा init-auto-complete.el देखें।
सिमेंटिक यूआई और बैक एंड पार्सिंग इंजन दोनों प्रदान करता है। ये धीमा है। ड्रॉपडाउन यूआई ठीक है लेकिन एक्स विंडो की आवश्यकता है। इंटेलीजेंस परिणाम ctags से बेहतर है। और डोकुमनेशन मेरे लिए बहुत भद्दा है। देखें init-semantic.el जानकारी के लिए।
कंपनी-मोड ऑटो-पूर्ण के समान है, अंतर यह है कि यह एक बंडल में सब कुछ पैकेज करता है। उदाहरण के लिए, C ++ डेवलपर्स को केवल कंपनी-मोड (स्वतः पूर्ण कुछ तृतीय पक्ष प्लगइन की आवश्यकता) स्थापित करने की आवश्यकता है। एक और यूआई अंतर है कि कंपनी उम्मीदवार को स्वचालित रूप से दिखाएगी । इसलिए आप कंपनी में कम कीज दबाएं। अनुकूलन के बाद ऑटो-पूर्ण में एक ही काम करना संभव है।
सारांश में, ऑटो-कम्प्लीट, कंपनी सबसे लोकप्रिय दो विकल्प हैं। शब्दार्थ और हिप्पी-विस्तार का भी स्वागत किया जाता है, लेकिन इसका कम उपयोग किया जाता है। अन्य उल्लेख करने के लिए बहुत तुच्छ हैं और उनकी विशेषताएं पहले से ही बड़े चार द्वारा कवर की गई हैं। उदाहरण के लिए, ऑटो-पूर्ण यस्नीपेट का उपयोग इनपुट स्रोत के रूप में कर सकता है (ऑटो पूर्ण यूआई प्रदान करता है, लेकिन वास्तविक उम्मीदवारों का उत्पादन यासनीपेट बैक एंड द्वारा किया जाता है)।
मैं उपयोग करने का सुझाव या तो स्वत: पूर्ण या कंपनी प्रमुख कोड पूर्णता प्लगइन के रूप में और या तो अर्थ या पूरक प्लगइन के रूप में हिप्पी-विस्तार ।
मैं कंपनी-मोड और हिप्पी का उपयोग करता हूं- क्योंकि,
अब (वर्ष 2017) कंपनी-मोड ऑटो-पूर्ण की तुलना में अधिक सक्रिय रूप से बनाए रखा गया है और इसमें अधिक 3 पार्टी प्लगइन्स हैं (उदाहरण के लिए, लेटेक्स प्लगइन)
हिप्पी-विस्तार बहुत सक्रिय नहीं है, लेकिन यह TAB
कुंजी पर कब्जा नहीं करता है जो कंपनी-मोड / अर्थ / ऑटो-पूर्ण उपयोग कर रहा है
यदि आप C ++ / Java के लिए कंपनी-मोड का उपयोग करते हैं, तो आप संशोधित करना चाह सकते हैं company-backends
।
कंपनी-मोड पर कुछ और टिप्स,
आपको मूल्य को ट्विक करने की आवश्यकता हो सकती है company-backends
। उदाहरण के लिए, मान लीजिए कि इसका मूल्य है (company-eclim company-semantic company-clang (company-dabbrev-code company-gtags company-etags company-keywords))
। फिर अगर company-eclim
आप गैर-शून्य उम्मीदवारों को प्राप्त कर सकते हैं company
, तो आपको लगता है कि आप जावा लिख रहे हैं, इसलिए यह बैकएंड नहीं चलेगा company-eclim
।
अब देखते हैं (company-dabbrev-code company-gtags company-etags company-keywords)
। इन चारों बैकेंड का एक साथ उपयोग किया जाएगा। उदाहरण के लिए, company-dabbrev-code
गैर-शून्य उम्मीदवारों को सफलतापूर्वक लाने के बाद भी , अन्य तीन बैकेंड अभी भी निष्पादित किए जाते हैं।
वास्तविक दुनिया में, अक्सर बैकएंड के क्रम को फिर से समायोजित करने या नए बैकेंड को जोड़ने के लिए आवश्यक है ( company-rtags
उदाहरण के लिए)।
complete.el
एक कोशिश देना चाहते हो सकता है । यह बहुत पुराना और कम ज्ञात है, लेकिन जिस तरह का इन-बफर पूरा करता है वह उपयोगी हो सकता है।M-x find-library complete
, फिर फ़ाइल में टिप्पणी पढ़ें।