회사 모드를 사용한 파일 이름 완성


11

init.el에서 다음 명령을 사용하여 회사를 활성화했습니다.

(require 'company)
(add-hook 'after-init-hook 'global-company-mode)

그러나 소스에 일부 공급자가 있으며 웹 사이트에서 지원한다고 언급하지만 파일 이름 완성을 얻지 못했습니다.

/ home / emmanuel을 입력하기 시작했는데 아무 일도 일어나지 않지만 옵션이 제공되기를 기대할 수 있습니까?

또한 상대 경로에 대한 회사 모드 자동 감지 완료 방법을 지원한다고 생각하지만 초기 "/"없이 팁을 어떻게 감지할지 잘 모르겠습니다.


1
회사 모드를 통해 자동 완성을 시도하는 주요 모드를 언급해야합니다. 아니면 미니 버퍼에서 파일 이름 완성을 찾고 있습니까? 명시 해주세요.
파프리카

1
나는 초보자입니다. 나는 그것을 이해하면서 모든 주요 모드 (립스, 일반 텍스트, 모든 프로그래밍 언어)에서 사용하고 싶습니다. 실제로 간단한 키워드 완성 (버퍼에서 다른 곳에서 사용되는 단어 제공)은 다른 모드뿐만 아니라 리스프 편집에서도 작동하는 것으로 보입니다.
Emmanuel Touzery

나중에 Haskell에 대한 더 강력한 완성도를 얻으려고 노력할 것입니다. 그러나 그것은 haskell 모드에만 해당되며 지금은이 기능을 모든 모드에서 작동 시키려고합니다.
Emmanuel Touzery

답변:


8

company-files파일 완성 을 위해 실행 해야합니다. 파일 완성 완료를 위해 다른 맵을 바인딩 할 수 있습니다.

(define-key global-map (kbd "C-.") 'company-files)

또한 회사 백엔드에 회사 파일이 있는지 확인하십시오 ( M-x> 사용자 정의 그룹> 회사> 회사 백엔드)


파일 이름 완성을 위해 반드시 키를 바인딩 할 필요는 없습니다. 여기서 핵심은 구성하는 것 company-backends입니다. 예를 들어 company-files,이 목록에서 먼저 넣거나 그룹 백엔드에 포함시킬 수 있습니다.
glucas

트리거 company-files또는 구성 하기 위해 일부 기능을 작성해야한다고 생각합니다 . 나에게는 적어도 그것이 있어도 자동으로 트리거되지는 않는다company-backends
Jesse

목록에 다른 백엔드가 있기 때문에 이것이 의심됩니다. 회사 모드는 현재 접두사를 처리 할 수 ​​있음을 나타내는 첫 번째 백엔드를 사용합니다. 목록 company-files의 시작 부분에 삽입 company-backends하면 자동 완성됩니다. 물론 이것은 실제로 원하는 것이 아닐 수도 있습니다. 파일 백엔드는 또 다른 백엔드
일뿐입니다

사실, 나는 몰랐다. 나는 vim 사용자를 emacs로 마이그레이션하고 있으며 vim에서는 파일 완료가 특정 경우 자동으로 트리거되고 다른 경우 코드 완료가 자동으로 트리거되었습니다. 나는 그것이 이상적인 것이라고 생각합니다.
Jesse

모드 후크를 사용하여 다른 모드에서 다른 백엔드 목록을 지정할 수 있습니다. 예를 들어 lisp 모드에서 기호 완성을 원할 수도 있고 쉘 스크립트의 경우 파일 이름 완성 등을 추가 할 수도 있습니다.
glucas

15

@Jesse가 이미 지적했듯이 여기서 원하는 것은 company-files백엔드입니다. 여러 가지 방법으로 사용할 수 있습니다.

  1. company-files직접 통화 할 수 있는 키를 묶습니다 .

  2. command를 사용하십시오 company-begin-backend. 백엔드를 사용하라는 프롬프트가 표시되면 완료 후보를 제공합니다.

  3. company-other-backend백엔드 목록을 회전하는 데 사용 합니다 (다음 항목 참조). 이것은 완료를 트리거하는 데 사용되거나 회사 모드가 트리거 된 후 다른 완료 후보 세트로 전환하기 위해 사용될 수 있습니다. 회사 맵에서 키 바인딩을 할당 할 수 있습니다 (예 :(define-key company-active-map (kbd "C-e") #'company-other-backend)

  4. 변수를 구성하십시오 company-backends. 회사 모드는 현재 접두사 (즉, 포인트 앞의 텍스트)를 허용하는 백엔드를 찾기 위해이 목록을 순회합니다. 현재 접두사를 수락하지만 완료 후보를 제공하지 않는 백엔드를 목록에 포함하는 것은 전적으로 가능합니다.이 시점에서 회사 모드는 아무것도 자동 완성하지 않습니다. 필요에 맞는 방식으로 백엔드를 주문하도록 목록을 사용자 정의 할 수 있습니다.

수정의 몇 가지 예 company-backends:

파일 이름 만 완성하려는 경우 유일한 백엔드로 만들 수 있습니다.

(setq company-backends '(company-files))

그럴 것 같지 않으므로 가장 일반적으로 사용되는 백엔드를 먼저 배치 한 다음 앞에서 언급 한 옵션 중 하나를 사용하여 백엔드를 전환하거나 다른 것이 필요할 때 이름별로 하나씩 호출하는 것이 좋습니다.

병합 된 완료 후보 세트를 작성하는 '그룹'백엔드를 구성 할 수도 있습니다. 예를 들어 다음을 시도하십시오.

(setq company-backends '((company-capf company-dabbrev-code company-files)))

이는 세 개의 다른 백엔드에서 후보를 병합하는 단일 백엔드를 지정합니다. 완료 시점, dabbrev 및 파일 시스템의 결과를 제공합니다.

모드 후크를 사용하여 다른 주요 모드에 대해 다른 백엔드 세트를 지정할 수 있습니다. 예를 들면 다음과 같습니다.

(add-hook 'org-mode-hook
          (lambda ()
            (setq-local company-backends '((company-files company-dabbrev)))))

(add-hook 'emacs-lisp-mode-hook
          (lambda ()
            (setq-local company-backends '((company-capf company-dabbrev-code)))))
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.