เอกสาร
ฟังก์ชัน API ที่จุดเสร็จสมบูรณ์สามารถดูได้ในเอกสารของ completion-at-point-functions
แต่ละฟังก์ชั่นของ hook นี้จะถูกเรียกใช้โดยไม่มีการโต้แย้งใด ๆ และควรคืนค่าให้เป็นศูนย์ซึ่งหมายความว่าไม่สามารถใช้งานได้ที่จุดหรือฟังก์ชั่นที่ไม่มีการโต้แย้งเพื่อดำเนินการให้เสร็จสิ้น (หมดกำลังใจ) หรือรายการแบบฟอร์ม . PROPS) ที่ START และ END กำหนดขอบเขตเอนทิตีให้เสร็จสมบูรณ์และควรมีจุด COLLECTION เป็นตารางความสมบูรณ์ที่จะใช้เพื่อทำให้เสร็จสมบูรณ์และ PROPS เป็นรายการคุณสมบัติสำหรับข้อมูลเพิ่มเติม
start
, end
และprops
ที่เห็นได้ชัด แต่ฉันคิดว่ารูปแบบของการcollection
ไม่ได้กำหนดไว้อย่างถูกต้อง เพื่อให้คุณสามารถดูเอกสารของtry-completion
หรือall-completions
ถ้า COLLECTION เป็น alist คีย์ (รถยนต์ขององค์ประกอบ) คือความสำเร็จที่เป็นไปได้ หากองค์ประกอบนั้นไม่ใช่เซลล์ข้อเสียแสดงว่าองค์ประกอบนั้นเป็นความสมบูรณ์ที่เป็นไปได้ หาก COLLECTION เป็นแฮชตารางคีย์ทั้งหมดที่เป็นสตริงหรือสัญลักษณ์ล้วนเป็นความสำเร็จที่เป็นไปได้ ถ้า COLLECTION เป็น obarray ชื่อของสัญลักษณ์ทั้งหมดใน obarray นั้นเป็นความสมบูรณ์ที่เป็นไปได้
คอลเลคชั่นยังสามารถใช้เป็นฟังก์ชั่นในการทำให้เสร็จสมบูรณ์ได้ มันได้รับสามข้อโต้แย้ง: ค่า STRING, คาดการณ์และไม่มี อะไรก็ตามที่มันกลับมาจะกลายเป็นคุณค่าของ
ตัวอย่าง
ด้านล่างเป็นตัวอย่างง่ายๆของการทำให้สมบูรณ์ที่ฟังก์ชันจุดซึ่งใช้คำที่กำหนดใน/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
ให้ emacs สามารถใช้ฟังก์ชั่นอื่น ๆ ถ้าเราล้มเหลว ในที่สุดคุณสมบัติเพิ่มเติมบางอย่างถูกตั้งค่าเพื่อปรับปรุงการรวมโหมด บริษัท
ประสิทธิภาพ
ไฟล์ word ในระบบของฉันมี 99171 รายการและ emacs สามารถทำมันให้เสร็จโดยไม่มีปัญหาใด ๆ ดังนั้นฉันเดาว่า 15,000 รายการไม่น่าจะมีปัญหา
บูรณาการกับโหมด บริษัท
โหมด บริษัท ผสานรวมได้เป็นอย่างดีกับการcompletion-at-point-functions
ใช้company-capf
แบ็กเอนด์ดังนั้นจึงควรทำงานนอกกรอบให้คุณ แต่คุณสามารถปรับปรุงความสมบูรณ์ที่ บริษัท เสนอโดยส่งคืนเพิ่มเติมprops
ในผลลัพธ์ของฟังก์ชัน capf อุปกรณ์ประกอบการสนับสนุนในปัจจุบันคือ
:company-doc-buffer
- ใช้โดย บริษัท เพื่อแสดงข้อมูลเมตาสำหรับผู้สมัครปัจจุบัน
:company-docsig
- ใช้โดย บริษัท เพื่อสะท้อนข้อมูลเมตาเกี่ยวกับผู้สมัครใน minibuffer
:company-location
- ใช้โดย บริษัท เพื่อข้ามไปยังตำแหน่งของผู้สมัครปัจจุบัน