希望 Emacs 也能有性感的悬浮窗口

悬浮窗口的作用,除去某些 nvim 插件花里胡哨的装 B 之外,是引发符号系统质变的催化剂。

vim / emacs 最强的地方之一是命令行工具的结合,其中与 ctags/gtags/cscope 结合打造出符号系统,更是杀手锏。

与 IDE 相比,一是索引快,用 emacs/ vim 就是要快。二是上手快,不需要项目的构建信息,特别是这个项目的构建不是那么容易的时候,”牺牲准确性来换取速度“ 就是一本万利的事情,这方面我认为是很多人选择 emacs / vim 而非 IDE 的原因,用一名后端 C++ er 的话说,反正 IDE 也是要退化成文本编辑器的,那还不如选灵活的 vim。

而 vim 自从有了悬浮窗口后,在这方面是如虎添翼,一飞冲天,最强符号索引系统已经实质名归了。

而且先不说实用性,就颜值来说也是性感的很。所以啥时候 Emacs 也能有这个玩意?

1 个赞

eldoc-box:

以及vertico-posframe能实现类似telescope的效果

这些包的原理应该都只是将minibuffer里的内容显示到posframe上,内容实际还是在minibuffer里。

我是从Nvim转到Emacs的,一段时间用下来就习惯在minibuffer中查看各种信息了,也挺方便的,而且感觉更简洁。

不过最近又看到了一个nano-dialog

还么看代码,不知道这个的原理是什么

感觉主楼的思路和EAF应该配合很好

citre插件的citre-peek 已经实现了你说的这个浮窗预览别的 tags 所在的文件的功能。(基于 overlay)。

此外 gui 一直都有浮窗(child frame),但是 childframe 应该很难实现到 终端版本里。

有看到这个windows平台专有的项目,也有popup功能,emacs实现的话,万一你期待的功能没有弹窗,还是会失望的 :rofl:,比方说终端就不支持posframe,gui和终端的某些功能就会不一样。

这就是最好的符号插件和最好的符号系统的差别了。

如果官方支持的话,那么已有的 counsel-rg, projectile-rg, helm-rg 等全部插件都能从中受益,用户想要窗口怎么弄自己封一层即可。

这个看着帅气……

截图里弹出的文本框有说明……

PS: 跑了下没成功,不知道问题出在哪里 2023-04-23 09-53-32屏幕截图

有生之年能不能在终端用上Emacs悬浮窗还是个问题。

瓶颈在哪里,愿闻其详

Emacs 关键问题是, 终端悬浮窗口最好和 child frame 编程接口一致, 同时不能像 overlay 那样实现, 字体对不齐会影响终端弹出框的位置。

GUI child frame 不比那个悬浮窗口好多了,Vim 的悬浮窗口能做到这样?

确实可以,而且类似于lazigit ranger这种面板式的终端工具,在悬浮窗口中也能很好使用。

GUI 的 Emacs 用户确实不关心浮动窗口了,因为 child frame 已经很好用了,而且有了很多基于 child frame的成熟插件。

感觉 Emacs 需要还需要一个支持终端的 child frame,这样在终端下使用 Emacs 的用户也 Happy 了。 之前在 emacs-devel 邮件列表看到有大佬提过要实现终端的 child frame,但后来没声音了,不知道进度如何了?

参考邮件列表的讨论:Implementing child frames on terminal

你注意看我的截图,弹出的窗口是超出 Emacs 的窗口的,vim/nvim 能做到这一点?

请问这是哪个补全插件?另外,你的配色感觉很好看啊。

补全是 ivy 全家桶,用了 nerd-icons-ivy-rich 美化
主题我用的 doom theme / doom modeline

那确实不可以,

ivy 可以代码补全?不是lsp-bridge、corfu这些lsp插件吗?

哦,你说图里面的,那个就是普通的 company + company-box

corfu 和 company 是前端,负责用什么样式展示内容(corfu 不属于 lsp)
而 lsp-bridge 同时提供了前端和后端

2 个赞

明白了,感谢回复。