कंपनी-मोड का उपयोग करके फ़ाइल नाम पूरा करना


11

मैंने अपने init.el में निम्न कमांड का उपयोग करके कंपनी को सक्षम किया:

(require 'company)
(add-hook 'after-init-hook 'global-company-mode)

हालाँकि, मुझे फ़ाइल नाम पूरा नहीं हो रहा है, हालाँकि स्रोत में कुछ प्रदाता है और यह समर्थित वेबसाइट का भी उल्लेख करता है।

मैं टाइप करना शुरू करता हूं / घर / इमैनुएल ... और कुछ भी नहीं होता है, हालांकि मैं विकल्पों की पेशकश शुरू करने के लिए पूरा होने की उम्मीद करूंगा?

इसके अलावा, कंपनी-मोड ऑटोडेटेक्ट को रिश्तेदार रास्तों के लिए कैसे पूरा करता है, मुझे लगता है कि मैंने पढ़ा है कि यह समर्थित है, लेकिन मुझे यकीन नहीं है कि यह कैसे पता चलेगा, शुरुआती टिप के बिना "/"?


1
आपको उल्लेख करना चाहिए कि आप किस प्रमुख-मोड में कंपनी-मोड के माध्यम से ऑटो-पूर्ति करने का प्रयास कर रहे हैं। या हो सकता है कि आप मिनीबफ़र में फ़ाइल नाम पूरा होने की तलाश कर रहे हों? कृपया निर्दिष्ट करें।
लाल शिमला मिर्च

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

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

जवाबों:


8

आपको company-filesफ़ाइल पूर्णता के लिए दौड़ना होगा । आप के साथ पूरा होने वाली फ़ाइलों के लिए एक अलग नक्शा बांध सकते हैं

(define-key global-map (kbd "C-.") 'company-files)

यह भी सुनिश्चित करें कि आपके पास कंपनी-बैकेंड में कंपनी-फाइलें हैं ( M-x> अनुकूलित-समूह> कंपनी> कंपनी बैकएंड)


जरूरी नहीं कि आप फाइलनाम पूरा करने के लिए एक कुंजी को बांधें। मुझे लगता है कि यहाँ मुख्य बिंदु कॉन्फ़िगर करना है company-backends। उदाहरण के लिए आप company-filesउस सूची में पहले स्थान पर रख सकते हैं , या इसे एक समूह बैकएंड में शामिल कर सकते हैं।
ग्लूकास

मुझे लगता है कि ट्रिगर करने के लिए company-files, या कुछ कॉन्फ़िगर करने के लिए कुछ फ़ंक्शन लिखना आवश्यक है। मेरे लिए, कम से कम, यह स्वचालित रूप से ट्रिगर नहीं है भले ही यहcompany-backends
जेसी

मुझे संदेह है कि आपके पास सूची में इसके आगे अन्य बैकएंड हैं? कंपनी मोड पहले बैकएंड का उपयोग करेगा जो इंगित करता है कि यह वर्तमान उपसर्ग को संभाल सकता है। यदि आप सूची company-filesकी शुरुआत में सम्मिलित करते हैं तो company-backendsयह स्वतः पूर्ण होना चाहिए। बेशक, यह वह नहीं हो सकता है जो आप वास्तव में चाहते हैं, केवल यह इंगित करते हुए कि फाइल बैकएंड सिर्फ एक और बैकएंड है ...
ग्लूकास

सच है, मुझे नहीं पता था कि। मैं एमएसीएस के लिए एक माइग्रेटिंग विम उपयोगकर्ता हूं, और विम में मेरे पास कुछ मामलों में स्वचालित रूप से पूर्ण होने वाली फ़ाइल, और दूसरों में कोड पूरा होने की स्थिति है। मुझे लगता है कि यह आदर्श होगा।
जेसी

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

15

जैसा कि @ जेसे ने पहले ही बताया, आप जो चाहते हैं, वह company-filesबैकएंड है। इसका उपयोग करने के कई अलग-अलग तरीके हैं:

  1. company-filesसीधे कॉल करने के लिए एक कुंजी को बांधें ।

  2. कमांड का उपयोग करें company-begin-backend। यह आपको बैकएंड का उपयोग करने के लिए संकेत देता है, फिर पूर्ण होने वाले उम्मीदवारों को प्रदान करता है।

  3. company-other-backendबैकएंड की सूची के माध्यम से घूमने के लिए उपयोग करें (अगले आइटम देखें)। यह पूरा होने को ट्रिगर करने के लिए इस्तेमाल किया जा सकता है या इसका उपयोग कंपनी मोड के ट्रिगर होने के बाद पूरा होने वाले उम्मीदवारों के एक अलग सेट पर स्विच करने के लिए किया जा सकता है। आप कंपनी के नक्शे में एक महत्वपूर्ण बाध्यकारी असाइन करना चाहते हैं, जैसे(define-key company-active-map (kbd "C-e") #'company-other-backend)

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

संशोधन के कुछ उदाहरण company-backends:

यदि आप कभी केवल फ़ाइल नाम को पूरा करना चाहते थे, तो आप अपने एकमात्र बैकएंड को बना सकते थे:

(setq company-backends '(company-files))

ऐसा लगता है कि संभावना नहीं है, इसलिए आप अपना सबसे अधिक इस्तेमाल किया जाने वाला बैकएंड पहले डालना बेहतर समझते हैं और फिर बैकेंड स्विच करने के लिए पहले बताए गए विकल्पों में से एक का उपयोग करते हुए या किसी अन्य चीज़ की आवश्यकता होने पर नाम से आह्वान करते हैं।

आप एक 'समूह' बैकएंड को भी कॉन्फ़िगर कर सकते हैं जो पूर्ण उम्मीदवारों का एक विलय सेट बनाता है। उदाहरण के लिए, इसे आज़माएँ:

(setq company-backends '((company-capf company-dabbrev-code company-files)))

यह एक एकल बैकएंड निर्दिष्ट करता है जो उम्मीदवारों को तीन अन्य बैकएंड से मिलाता है। यह आपको पूर्ण-बिंदु, डाबरेव, और फाइल सिस्टम से परिणाम देगा।

आप विभिन्न प्रमुख मोड के लिए बैकएंड के एक अलग सेट को निर्दिष्ट करने के लिए मोड हुक का उपयोग कर सकते हैं। उदाहरण के लिए:

(add-hook 'org-mode-hook
          (lambda ()
            (setq-local company-backends '((company-files company-dabbrev)))))

(add-hook 'emacs-lisp-mode-hook
          (lambda ()
            (setq-local company-backends '((company-capf company-dabbrev-code)))))
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.