선적 서류 비치
포인트 함수에서의 API 완성은 다음의 문서에서 찾을 수 있습니다. completion-at-point-functions
이 후크의 각 함수는 인수없이 교대로 호출되며, 해당 시점에 적용 할 수 없음을 의미하기 위해 nil을 리턴하거나 완료 (감지 된)를 수행 할 인수가없는 함수 또는 양식 목록 (START END COLLECTION)을 리턴해야합니다. PROPS) START 및 END가 완료 할 엔티티를 구분하고 포인트를 포함해야하는 경우 COLLECTION은 완료하는 데 사용할 완료 테이블이고 PROPS는 추가 정보의 특성 목록입니다.
start
, end
그리고 props
분명하다,하지만 난의 형식이 생각 collection
제대로 정의되지 않았습니다. 이를 위해 try-completion
또는 의 설명서를 볼 수 있습니다all-completions
COLLECTION이 목록 인 경우 키 (요소의 자동차)가 완료 될 수 있습니다. 요소가 죄수 셀이 아닌 경우 요소 자체가 가능한 완성입니다. COLLECTION이 해시 테이블 인 경우 문자열 또는 기호 인 모든 키가 가능한 완료입니다. COLLECTION이 obarray 인 경우 obarray의 모든 기호 이름이 완료 될 수 있습니다.
COLLECTION은 완료 자체를 수행하는 기능 일 수도 있습니다. 값 STRING, PREDICATE 및 nil의 세 가지 인수를받습니다. 그것이 리턴하는 것은`try-completion '의 가치가된다.
예
다음은 /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가 다른 capf 함수를 사용할 수 있도록 설정됩니다 . 마지막으로 회사 모드 통합을 향상시키기 위해 일부 추가 속성이 설정됩니다.
공연
내 시스템의 단어 파일에는 99171 개의 항목이 있었고 emacs는 아무런 문제없이 완료 할 수 있었으므로 15000 개의 항목은 문제가되지 않아야합니다.
회사 모드와 통합
회사 모드 completion-at-point-functions
는 company-capf
백엔드 를 사용하는 것과 매우 잘 통합 되므로 즉시 사용할 수 있지만 props
capf 기능의 결과 로 추가 를 반환하여 회사가 제공하는 완성도를 향상시킬 수 있습니다 . 현재 지원되는 소품은
:company-doc-buffer
-현재 후보에 대한 메타 데이터를 표시하기 위해 회사에서 사용
:company-docsig
-회사에서 미니 버퍼에서 후보에 대한 메타 데이터를 에코하는 데 사용
:company-location
-현재 후보자의 위치로 이동하기 위해 회사에서 사용