회사 완성 팝업에 회사 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.