Перейти до буфера документації в режимі компанії


10

Нещодавно я перейшов auto-complete-modeна, company-modeі мені весело. Нещодавно мені довелося написати якийсь код 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, щоб "назавжди" відкрити буфер документа:

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

Просто задля повноти: ось питання, яке я відкрив у сховищі проекту GitHub, і вони запропонували піти цим шляхом.
petrux

Я просто хотів опублікувати свій маленький твіт, якщо ви хочете, щоб це вікно було також вибрано (defun my-company-show-doc-buffer () "Тимчасово показати буфер документації для вибору." (Інтерактивний) (нехай * ((вибрано (n-я компанія-відбір компанії-кандидати)) (doc-буфер (або (компанія-виклик-бекенд 'док-буфер вибрано) (помилка "Документація недоступна"))))) -char (point-min))) (select-window (display-buffer doc-buffer t))))
sandric

4

Коментар автора на сторінці, яка порівнює режим компанії з автоматичним завершенням :

Що відбувається, коли ви натискаєте клавішу F1 в режимі компанії

Він використовує спливаюче вікно для відображення довідкового буфера, але приховує його перед наступною командою (якщо тільки ця команда не є прокруткою-інше-вікно або прокрутка-інше-вікно-вниз).

Виходячи з цього, ви можете лише прокручувати буфер документації, а не переходити до нього.

Але, переглянувши код для 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

Так, схоже на компанію - електричне використання використовує save-window-excursionдля збереження / відновлення віконної конфігурації, тому воно не працюватиме. Можливо, вам буде краще прив’язати власну команду «показати документ» до ключа в company-active-map.
глюкас
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.