कंपनी-डेबरेव को कंपनी के पॉपअप में कैसे जोड़ें?


12

सेट अप:

केएईएल में 2015-07-25 का GUI संस्करण GNU Emacs 25.0.50.1 (x86_64-w64-mingw32)

EmacsW64 से संकलित।

, MELPA से नवीनतम संस्करण का उपयोग कर

विंडोज 7 x64 बिट।

परिस्थिति:

उदाहरण के लिए, मैं बफर फ़ॉबरसेंटेंस में टाइप कर रहा हूं।

और फिर उसके नीचे एक नई लाइन शुरू करें, और फोबो टाइप करके, मुझे उम्मीद है foobarsentenceकि कंपनी पॉपअप पूरा करने वाली खिड़की से सुझाव दिया जाएगा। लेकिन नहीं है foobarsentence

मुझे यह एक और जवाब से पता चला कि मैं उसके लिए कंपनी- dabbrev`` का उपयोग कर सकता हूं, बाध्य M-/,। लेकिन मैं यह पता नहीं लगा सका कि मैं company-dabbrevपॉपअप-विंडो से सुझावों को कैसे 'फीड' कर सकता हूं । मैंने अपना प्रश्न स्पष्ट करने के लिए एक पेंचकस gif बनाया।

यहाँ छवि विवरण दर्ज करें

जैसा कि आप देख सकते हैं, M-/कॉल company-dabbrev। लेकिन मैं यह देखना चाहूंगा कि कंपनी ने पॉपअप पूरा करने का सुझाव दिया है। यह मुझे आश्चर्य है कि यह डिफ़ॉल्ट रूप से नहीं है।

company-dabbrevकंपनी पॉपअप विंडो से सुझावों को 'फीड' करने के लिए कोई सुझाव ?


यह कौन सी प्रमुख-विधा है?
22

जवाबों:


25

यहां बताया गया है कि कंपनी के कामों को कैसे पूरा किया जाता है (मैं थोड़ा और सरल कर रहा हूं और अधिक विस्तृत विवरण के प्रलेखन में पाया जा सकता है company-backends C-hvcompany-backendsRET

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

आपके मामले में (आप emacs- लिस्प-मोड में लगते हैं) emacs-lisp बैकेंड उम्मीदवारों को पूरा करने के लिए वापस कर रहा है और इसलिए company-dabbrevकभी भी पूरा करने के लिए कंपनी द्वारा उपयोग नहीं किया जाता है और आप कभी भी foobarsentenceपूरा नहीं करते हैं । इसलिए आप कंपनी-बैकेंड को बदलना चाह सकते हैं ताकि company-dabbrevपहले company-elisp(या company-capfहालिया एमेसेन में) आए। लेकिन मुझे लगता है कि वह नहीं है जो आप चाहते हैं कि मौजूदा स्थिति को उलट दिया जाएगा और आपको एमएसीएस-लिस्प बैकेंड (जिस मामले में पढ़ा गया है) से पूर्णता नहीं मिलेगी।

कंपनी कई स्रोतों से पूर्णता को मर्ज करने का एक तरीका प्रदान करती है जो इसे groupedबैकएंड कहती है । आमतौर पर सदस्य company-backendsव्यक्तिगत बैकेंड होते हैं, लेकिन यह बैकएंड की एक सूची भी हो सकती है, जिसमें बैकएंड से पूरा होने पर विलय हो जाता है बशर्ते कि वे एक ही वापस हों prefixया पाठ पूरा हो (कृपया company-backendsविस्तृत विवरण के लिए दस्तावेज देखें )।

इसलिए यदि आप company-elisp(हाल ही में एमैकेन company-capfका उपयोग किया जाता है) से पूर्णता को मर्ज करना चाहते हैं और company-dabbrevबस यही करें

(add-to-list 'company-backends '(company-capf company-dabbrev))

इसके अतिरिक्त आप :withकीवर्ड का उपयोग करके विभिन्न बैकएंड को मर्ज कर सकते हैं

(add-to-list 'company-backends '(company-capf :with company-dabbrev))

यह उदाहरण के बिना बैकएंड की एक सूची से अलग है :withक्योंकि कंपनी (पाठ पूरा होने के लिए) का :withनिर्धारण करने से पहले केवल बैकएंड का उपयोग करेगी prefix। तात्पर्य यह है कि बैकएंड के उम्मीदवारों को :withकंपनी द्वारा नजरअंदाज कर दिया जाएगा, भले ही बैकएंड वापस आए prefixया नहीं, बैकएंड में से कोई भी :withवापस नहीं होने के बावजूद prefix

आप इसे स्थानीय रूप से emacs-lisp बफर में सेट करना चाह सकते हैं (मैं ऐसा करना पसंद करता हूं)


@wasamasa ने प्रतिक्रिया के लिए धन्यवाद, मेरे जवाब का उल्लेख करने के लिए संपादित किया:with
इकबाल अंसारी

सर, आप मेरे वोट के लायक हैं। मैंने वास्तव में आपके स्पष्टीकरण का आनंद लिया, और कंपनी के बारे में बातें सीखीं। उसके लिए धन्यवाद।
रेनेफ्रॉगर

खुशी है कि मैं मदद कर सकता हूं
इकबाल अंसारी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.