lsp-mode rust/go eldoc 只显示函数签名

之前一直没太关心这个问题,因为一直有设置 lsp-eldoc-render-all t

  • 在 go 中,render-all 后可以展示函数签名,eldoc minibuffer 高度也不是很大,
  • 主要是 rust,使用 RA 作为 server 时,minibuffer 有时能占 1/3 的屏幕,十分讨厌,关闭 render-all 可以让 minibuffer 变成一行,但是默认只展示函数的 self 类型,用处不是很大,发现有个 PR 解决了这个问题,我本地测试了下,基于最新 master (commit:7ce0d789a313b84ef7c1b00b63a3db4cc0959fbe)修改有效,不要从 elpa 里面安装!!

后面发现 reddit 这个帖子,设置 lsp-gopls-hover-kind "NoDocumentation" 后,就能让 go 也只展示签名了。

效果图

有同样需求的同学,可参考我的配置文件

总结

一些重点的 package 用 submodule 管理起来,不要随便升级,这个 eldoc minibuffer 的问题出现过很多次了!!

1 个赞
(setq lsp-eldoc-enable-hover nil)

一劳永逸

大家怎么会用submodule 来管理自己常用的包么?有代码可以看看么

记得懒猫有。

重点不是submodule,是没有用对配置:(setq lsp-eldoc-enable-hover nil)

请教下,你写的lsp-mode python要怎么设置才会像上面显示签名?

@seagle0128 用的doom默认的配置,lsp-eldoc-enable-hover是t,显示函数签名时,不会显示参数,单只有一对括号。 看了lsp-python-ms 和lsp-mode的README都没找到相关文档。

这样设置后,eldoc 不就不展示了吗?

所有使用LSP的语言都不显示eldoc。elisp还是会显示的。

这个跟server实现有关。

lsp-python-ms ms的那个server,是没有这个功能,还是需要配置

server不支持

设置lsp-gopls-hover-kind "NoDocumentation"并不能完全解决问题,比如对于go的struct,lsp eldoc仍然显示全部的定义,使得minibuffer扩张

不清楚你那边的配置,我这边 eldoc minibuffer 现在都是一行

检查了一下我的配置,没有设置lsp-eldoc-render-all nil。所以对于go的struct,起作用的是lsp-eldoc-render-all