看了下这几个参数基本够用了,默认值可以参考下这个(不一定完全一致)
(defvar eldoc-box-frame-parameters
'(;; make the childframe unseen when first created
(left . -1)
(top . -1)
(width . 0)
(height . 0)
(no-accept-focus . t)
(no-focus-on-map . t)
(min-width . 0)
(min-height . 0)
(internal-border-width . 1)
(vertical-scroll-bars . nil)
(horizontal-scroll-bars . nil)
(right-fringe . 8)
(left-fringe . 8)
(menu-bar-lines . 0)
(tool-bar-lines . 0)
(line-spacing . 0)
(unsplittable . t)
(undecorated . t)
(visibility . nil)
(mouse-wheel-frame . nil)
(no-other-frame . t)
(cursor-type . nil)
(inhibit-double-buffering . t)
(drag-internal-border . t)
(no-special-glyphs . t)
(desktop-dont-save . t)
(tab-bar-lines . 0)
(tab-bar-lines-keep-state . 1))
"Frame parameters used to create the frame.")
还有个问题:为什么依赖是>=30.1?我的理解是跟随posframe即可(>=26.1)。是还有其他考虑吗?
I improve the appearance of the popup.
- add some space to between the border and the document content.
- break long lines by word instead of character.
I think it is much better now.
好消息。dev分支什么时候能合并到main分支呢?还有30.1的依赖能调整吗?
今天我已经合了,dev上的改动不止这
posframe buffer 现在隐藏了,另外最主要是提升了和eldoc 默认行为的兼容性,现在任何原先需要在eldoc-buffer 才能查看的信息,现在在弹出框上可以看了。比如,flymake, dape.
还有30.1的依赖能调整吗?
为啥要调整呢?我估计29是没问题的,主要是,最近几个版本eldoc修改比较多吧,另外29 eglot 才并入。
eldoc和eglot都上了GNU elpa,查了下posframe/edloc/posframe都支持26.3+。理论上跟它们保持一致就可以,除非你调用了特别的函数。我翻了下代码好像没看到。eldoc-box是支持27.1+,而且不依赖于posframe。
我现在明白你的意思了,eldoc, egot, posframe这几个包 在用低版本的emacs时可以从elpa 安装。你方便测试一下不嘛,看下27.1有没问题?
另外我用posframe 的原因是不想重造车轮,这也是我在创建eldoc-mouse 过程中的设计原则,包括尽量使用eldoc 已有功能,保持和其的兼容性,这样对于长期的维护更有利,看下我的代码量就明白了。
你的思路是对的,长期维护说起来简单,其实一点也不简单,比如我,5年前写代码都充满斗志,现在年纪大了,啥都不像动了,时间长了,许多细节忘记了,就更不像动了。。。 
1 个赞
eldoc-mouse 只用了不到300行代码,实现了包括多eglot, elisp mode,任何支持eldoc 的功能的支持,而且还支持扩展。
posframe 很流行,我看很有一些package 依赖于posframe. 定位的handlers 太好用了!另外initialize 也很关键。我只有在对内容和边框之间加点空间的时候遇到点麻烦,最后也通过initialize 解决了
用posframe没有问题,我只是想说明这个依赖关系。我认为可以放开些,大不了加上compat包,使用的人会更多。有空我测测27或者28行不行。
1 个赞
README里 emacs-lisp-mode 写错了,报了个issue
Updated:建议再加一个eldoc-mouse-mode-map? 这样的话可以配置为
(use-package eldoc-mouse
:bind (:map eldoc-mouse-mode-map
("C-h ." . eldoc-mouse-pop-doc-at-cursor))
:hook (eglot-managed-mode emacs-lisp-mode))
1 个赞
改正了拼写错误。
确认一下,keymap 是不是先要在eldoc-mouse.el 里面定义为minor mode 定义一个keymap 呢?
这样就可以:
(defvar eldoc-mouse-mode-map (make-sparse-keymap))
;;;###autoload
(define-minor-mode eldoc-mouse-mode
"Toggle the `eldoc-mouse-mode'."
:lighter " eldoc-mouse"
:keymap eldoc-mouse-mode-map
(if eldoc-mouse-mode
(eldoc-mouse-enable)
(eldoc-mouse-disable)))
还不行的话开个权限我直接改了 
你这代码都在这里了,肯定可以了。
把你加成maintainer没问题呀,只有你愿意,就发个账号来。
试了下,可以和 eldoc-box 搭配使用
但鼠标移动到某个点上面时,会同时弹出 eldoc-box 和 eldoc-mouse 的框
如果只移动编辑器的光标,那么仅弹出 eldoc-box 的框
我认为移动光标时自动弹出,不是一个好的选择,mouse hover 可以认为是在用户想查看时才弹出,这是我做eldoc-mouse 的原因。
和我的想法一样, 但是我没有大佬的执行力和elisp水平 