회사 완성 팝업에 회사 dabbrev를 어떻게 추가합니까?


12

설정:

KAEL의 GUI 버전 GNU Emacs 25.0.50.1 (x86_64-w64-mingw32) 2015-07-25

EmacsW64에서 컴파일

최신 버전의 MELPA 사용

Windows 7 x64 비트

상태:

예를 들어, 버퍼 foobarsentence를 입력하고 있습니다.

그런 다음 그 아래에 새 줄을 시작하고 fooba를 입력 foobarsentence하면 회사 팝업 완료 창에서 제안 될 것으로 예상됩니다 . 그러나 없습니다 foobarsentence.

나는 다른 대답에서 company-dabbrev를 사용할 수 있다는 것을 알았습니다 M-/. 그러나 제안을 company-dabbrev팝업 창에 '공급'하는 방법을 알 수 없었습니다 . 내 질문을 명확히하기 위해 스크린 캐스트 GIF를 만들었습니다.

여기에 이미지 설명을 입력하십시오

보다시피,으로 M-/전화 하십시오 company-dabbrev. 그러나 회사 완성 팝업에서 제안 된 것을보고 싶습니다. 이것이 기본적으로 아니라는 사실에 놀랐습니다.

company-dabbrev회사 팝업 창 에서 제안을 '피드'하기위한 제안이 있습니까?


이것은 어떤 주요 모드입니까?
— PythonNut

답변:


25

회사에서 완성하는 방법은 다음과 같습니다 company-backends C-hvcompany-backendsRET. 문서에서보다 자세한 설명을 볼 수 있습니다 .

백엔드 (완료 엔진) 회사 목록이 완성 시점에 제공하려고합니다. 회사는이 백엔드를 하나씩 차례로 시도하며 후보를 리턴하는 첫 번째 백엔드는 완료에 사용되며 나머지 백엔드는 무시됩니다. 따라서 기본적으로 한 번에 하나의 백엔드 만 사용됩니다.

귀하의 경우 (emacs-lisp 모드에있는 것처럼 보입니다) emacs-lisp 백엔드는 완료 후보를 반환하므로 company-dabbrev회사에서 완료를 위해 사용하지 않으며 완료되지 않습니다 foobarsentence. 따라서 회사 백엔드를 변경하여 company-dabbrev이전 company-elisp(또는 company-capf최근 emacsen) 으로 변경하려고 할 수 있습니다 . 그러나 현재 상황을 되돌릴 수 있기 때문에 이것이 원하는 것이 아니라고 생각합니다.

회사는 grouped백엔드 라고하는 것을 사용하여 여러 소스의 완료를 병합하는 방법을 제공합니다 . 일반적으로 구성원 company-backends은 개별 백엔드이지만 백엔드의 목록 일 수도 있습니다.이 경우 백엔드에서 완료된 내용이 동일 prefix하거나 반환 할 텍스트가있는 경우 병합됩니다 ( company-backends자세한 설명 은 설명서를 참조하십시오 ).

따라서 company-elisp(최근 emacsen 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
— 이크발 안사리를

선생님, 당신은 내 투표를받을 자격이 있습니다. 나는 당신의 설명을 정말로 즐기고 회사에 대해 배웠습니다. 고마워
— ReneFroger

기꺼이 도와 드리겠습니다
— Iqbal Ansari
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.