给eglot加了个childframe的显示模块

是的,功能少一些。

1 个赞

我推送了一个分支,

你试试好不好用?

功能少,但是开箱即用。lsp-mode虽然现在简化了不少但是还做不到eglot级别的开箱即用

1 个赞

位置有点奇怪。。好像隔了一行。。

我比较期待的方式是像vscode一样在光标正右下方显示。。

修复了,我还加了一个minor mode eldoc-box-hover-at-point-mode,直接开启这个minor mode就行了,不用再搞其他设置。

帅呆了。另外,移动光标自动消失这个有办法做到吗?

?有的呀,你的不行吗?

貌似不会。。还是我姿势不正确?那个eldoc-idle-delay我设了 2 秒,应该不可能那么快消失又出现的。。

Untitled

我这里没有问题,能给我看看你的配置吗?

最小配置只要

(require 'eldoc-box)
(eldoc-box-hover-at-point-mode)

就够了

(straight-register-package
 '(eldoc-box
   :type git
   :host github
   :repo "casouri/eldoc-box"
   :branch "pop-at-point"))
(use-package eldoc-box
    :straight eldoc-box
    :diminish (eldoc-box-hover-at-point-mode)
    :hook ((eglot--managed-mode . eldoc-box-hover-at-point-mode)
           (eldoc-mode . eldoc-box-hover-at-point-mode)))
1 个赞

感觉没问题啊……给我看看你的pre-command-hook

是这样的:(company-pre-command eldoc-pre-command-refresh-echo-area t eldoc-box-quit-frame)

我没看出来问题。虽然我觉得你已经试过了,下载最最新版的eldoc-box并且emacs -q确定一下?

我开新的emacs -q然后复制那个分支到scratcheval-buffer一下再开启上面那个mode,结果一样~

实在复现不出来,如果还有什么是不一样的,就只能是Emacs版本了。我用的是Emacs 27,你用的是什么版本?

GNU Emacs 26.1.90 (build 1, x86_64-apple-darwin18.2.0, Carbon Version 158 AppKit 1671.1) of 2018-11-28 Mac 版本

我试了一下http://emacsformacosx.com上面的版本,这个版本的话没光标移动问题,但是没有边框~

我也没有……这个应该不是我的锅,但是我也不清楚是谁的。我是把childframe的背景色设置的比普通背景浅一点。

测试了一下,flycheck-posframe没有这个问题。猜测可能和eldoc的某种机制有关。因为Flycheck同时有flycheck-display-errors-delayflycheck-idle-change-delay,移动时不止没有即时显示,还不会即时check…

ElDoc在pre-command-hook里会重新显示一遍doc(eldoc-pre-command-refresh-echo-area),但是后面的eldoc-box-quit-frame应该会把显示的doc隐藏才对。

或许你可以试试把eldoc-pre-command-refresh-echo-areapre-command-hook移除?因为没法复现,我也没法排错……只能试了