Answers:
我看不到公司模式内置的方法来执行此操作,但是您可以将自己的密钥绑定添加到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)
作者在比较公司模式与自动完成的页面上的评论:
在公司模式下按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文件中。
save-window-excursion
保存/恢复窗口配置,因此它将无法正常工作。您最好将自己的“ show doc”命令绑定到中的键company-active-map
。