प्रलेखन
बिंदु समारोह में पूरा होने वाले एपीआई के प्रलेखन में पाया जा सकता है completion-at-point-functions
इस हुक पर प्रत्येक फ़ंक्शन को बिना किसी तर्क के बदल दिया जाता है और इसका मतलब यह है कि यह बिंदु पर लागू नहीं होता है, या पूर्ण (हतोत्साहित), या फ़ॉर्म की सूची को पूरा करने के लिए कोई तर्क नहीं है (START END COLLECTION) ।
start
, end
और props
स्पष्ट हैं, लेकिन मुझे लगता है कि का प्रारूप collection
ठीक से परिभाषित नहीं है। उसके लिए आप try-completion
या के दस्तावेज देख सकते हैंall-completions
यदि संकलन एक एलिस्ट है, तो कुंजी (तत्वों की कार) संभव पूर्णताएं हैं। यदि कोई तत्व एक कोन्स सेल नहीं है, तो वह तत्व ही संभव पूर्णता है। यदि COLLECTION एक हैश-टेबल है, तो सभी कुंजी जो तार या प्रतीक हैं, वे संभावित पूर्णताएं हैं। यदि संकलन एक बाधा है, तो मोटे तौर पर सभी प्रतीकों के नाम संभव पूर्णता हैं।
संकलन भी पूरा करने के लिए एक समारोह हो सकता है। यह तीन तर्क प्राप्त करता है: मान STRING, PREDICATE और nil। जो भी लौटाता है वह `कोशिश-पूर्ण 'का मूल्य बन जाता है।
उदाहरण
नीचे बिंदु फ़ंक्शन पर पूरा होने का एक सरल उदाहरण है जो /etc/dictionaries-common/words
बफर में शब्दों को पूरा करने के लिए परिभाषित शब्दों का उपयोग करता है
(defvar words (split-string (with-temp-buffer
(insert-file-contents-literally "/etc/dictionaries-common/words")
(buffer-string))
"\n"))
(defun words-completion-at-point ()
(let ((bounds (bounds-of-thing-at-point 'word)))
(when bounds
(list (car bounds)
(cdr bounds)
words
:exclusive 'no
:company-docsig #'identity
:company-doc-buffer (lambda (cand)
(company-doc-buffer (format "'%s' is defined in '/etc/dictionaries-common/words'" cand)))
:company-location (lambda (cand)
(with-current-buffer (find-file-noselect "/etc/dictionaries-common/words")
(goto-char (point-min))
(cons (current-buffer) (search-forward cand nil t))))))))
पूरा होने वाला कार्य बिंदु पर शब्द के लिए दिखता है (लाइब्रेरी thingatpt
का उपयोग शब्द की सीमा को खोजने के लिए किया जाता है) और इसे /etc/dictionaries-common/words
फाइल में शब्दों के खिलाफ पूरा करता है , संपत्ति :exclusive
सेट की जाती है no
ताकि एमएसीएस अन्य कैपफ कार्यों का उपयोग कर सके यदि हमारी विफलता होती है। अंत में कंपनी-मोड एकीकरण को बढ़ाने के लिए कुछ अतिरिक्त गुण निर्धारित किए गए हैं।
प्रदर्शन
मेरे सिस्टम पर शब्द फ़ाइल में 99171 प्रविष्टियाँ थीं और एमएसीएस उन्हें बिना किसी समस्या के पूरा करने में सक्षम था, इसलिए मुझे लगता है कि 15000 प्रविष्टियों को कोई समस्या नहीं होनी चाहिए।
कंपनी-मोड के साथ एकीकरण
कंपनी मोड बैकएंड completion-at-point-functions
का उपयोग करने के साथ बहुत अच्छी तरह से एकीकृत करता है company-capf
, इसलिए इसे आपके लिए बॉक्स से बाहर काम करना चाहिए, लेकिन आप कंपनी द्वारा प्रस्तुत किए गए props
पूर्णताओं को कैपफ फ़ंक्शन के परिणाम में अतिरिक्त वापस करके बढ़ा सकते हैं । वर्तमान में समर्थित सहारा हैं
:company-doc-buffer
- कंपनी द्वारा वर्तमान उम्मीदवार के लिए मेटाडेटा प्रदर्शित करने के लिए उपयोग किया जाता है
:company-docsig
- कंपनी द्वारा मिनीबफर में उम्मीदवार के बारे में मेटाडेटा गूंजने के लिए उपयोग किया जाता है
:company-location
- वर्तमान उम्मीदवार के स्थान पर कूदने के लिए कंपनी द्वारा उपयोग किया जाता है