회사 모드로 문서 버퍼로 이동


10

나는 최근에서 전환 한 auto-complete-modecompany-mode재미와 I. 최근에는 Emacs Lisp 코드를 작성해야했습니다. 함수 입력을 시작하면 완료 후보가 표시되고을 누르면 F1문서가 다른 버퍼에 열립니다. 내가하고 싶은 문서 버퍼에 뛰어 입력 할 때,하지만 C-x o이 폐쇄됩니다. 힌트가 있습니까?

답변:


8

이 작업을 수행하기 위해 회사 모드에 내장 된 방법은 보이지 않지만에 고유 한 키 바인딩을 추가 할 수 있습니다 company-active-map.

빠른 실험으로 company-show-doc-buffer구현을 수행하고 company--electric-do래퍼를 간단히 제거했습니다 .

(defun my/company-show-doc-buffer ()
  "Temporarily show the documentation buffer for the selection."
  (interactive)
  (let* ((selected (nth company-selection company-candidates))
         (doc-buffer (or (company-call-backend 'doc-buffer selected)
                         (error "No documentation available"))))
    (with-current-buffer doc-buffer
      (goto-char (point-min)))
    (display-buffer doc-buffer t)))

이 키를 다른 키 (예 : C-F1)에 바인딩하여 doc 버퍼를 "영구적으로"열 수 있습니다.

    (define-key company-active-map (kbd "C-<f1>") #'my/company-show-doc-buffer)

그냥 완전성을 위해 : 여기 GitHub의 프로젝트의 저장소에 열 문제의 I이며, 그들은이 길을 갈 것을 제안했다.
petrux

이 창을 선택하기를 원하는 경우를 대비하여 약간의 조정을 게시하고 싶었습니다 (defun my-company-show-doc-buffer () "선택 항목의 문서 버퍼를 임시로 표시하십시오." (n 번째 회사 선택 회사 후보자)) (doc-buffer (또는 (company-call-backend 'doc-buffer selected) (오류 "문서가 없습니다")))))-현재 버퍼 문서 버퍼 -char (point-min))) (select-window (display-buffer doc-buffer t))))
sandric 2016 년

4

회사 모드와 자동 완성을 비교 하는 페이지에 대한 작성자의 의견 :

회사 모드에서 F1을 누르면 어떻게됩니까?

팝업 창을 사용하여 도움말 버퍼를 표시하지만 다음 명령 앞에 숨 깁니다 (명령이 scroll-other-window 또는 scroll-other-window-down이 아닌 경우).

이를 기반으로 문서 버퍼를 스크롤하지 않고 스크롤 만 할 수 있습니다.

그러나에 대한 코드 를 살펴보면에서 company-show-doc-buffer사용 company--electric-do하는 명령을 대화식으로 호출 하는을 사용하는 것으로 나타났습니다 company--electric-commands. 일반적으로 scroll-other-window및 만 포함 scroll-other-window-down하지만 other-window해당 목록에 추가 할 수 있습니다 .


방금 다음과 같이 테스트 (defvar company--electric-commands '(scroll-other-window scroll-other-window-down other-window) "List of Commands that won't break out of electric commands.")했지만 작동하지 않습니다. 입력 C-...하면 도움말 버퍼가 닫힙니다. (add-to-list 'company--electric-commands 'other-window)내 init 파일에 넣는 것과 같습니다 .
petrux

예, 회사처럼 보입니다. Electric-do는 save-window-excursion창 구성을 저장 / 복원하는 데 사용 하므로 작동하지 않습니다. 'show doc'명령을의 키에 바인딩하는 것이 좋습니다 company-active-map.
glucas
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.