lsp-ui 在补全时显示文档

我在编写代码时发现 lsp-ui 在我查找补全项时显示了文档而遮挡补全项

我的配置:

(use-package lsp-ui
  :after lsp-mode
  :bind
  (("C-c d" . lsp-ui-peek-find-definitions)
   ("C-c r" . lsp-ui-peek-find-references))
  :custom
  ((lsp-ui-sideline-show-diagnostics t)
   (lsp-ui-sideline-show-hover t)
   (lsp-ui-sideline-show-code-actions t)
   (lsp-ui-sideline-update-mode nil)
   (lsp-ui-sideline-delay 0.2)
   (lsp-ui-doc-enable t)
   (lsp-ui-doc-position 'at-point)
   (lsp-ui-doc-delay 0.2)
   (lsp-ui-doc-show-with-cursor t)
   (lsp-ui-doc-show-with-mouse nil)
   (lsp-ui-imenu-window-width 30)
   (lsp-ui-imenu--custom-mode-line-format t)
   (lsp-ui-imenu-auto-refresh t)))

试试 (setq lsp-ui-doc-show-with-cursor nil)

我之前尝试过了,可这样没法自动显示文档

是不是“鱼和熊掌不可兼得”?

有没有一种hook,可以反向操作,在不是这个hook时 启用某个mode?

如果有的话,在complete时禁用掉lsp-ui-doc-enable就行了

这个思路可行吗?

有几种解决方案:

  1. (setq lsp-ui-doc-position 'top)
  2. 用快捷键显示文档
  3. 用鼠标看文档
  4. 使用company的时候禁止lsp-ui-doc。

谢谢你的回复!

4如何判断是否正在使用company呢?

https://github.com/manateelazycat/auto-save/blob/1402a00cb5f95256b6a86747a19b7316f810b9f9/auto-save.el#L140

1 个赞

试试 company-box

抱歉,没看懂您的意思:company-box不是一个包吗?怎么实现判断?

  1. 对于 minor mode 可以这样判断: (bound-and-true-p company-mode)

    来源:emacs - How to check whether a minor mode(.e.g flymake-mode) is on? - Stack Overflow

  2. 对于 major mode 直接看变量 major-mode 就能知道(只有一个)

抱歉,您这个与我的需求不符合,我想要判断是不是在补全,您这个是只要运行company就会输出t