holo-layer: 一种全新的Emacs增强图层插件

懒猫大大,我的使用场景是在服务器上安装emacs,然后在本地pc机上起个X server,设置服务器的DISPLAY将emacs画面显示到本地PC机。 如此方法使用holo-layer时,本地pc机上一片黑,但是能看到光标动画,但是光标动画非常缓慢,能大概给个如何排查该问题的思路嘛?

holo-layer 的技术依赖本地GUI窗口, 不支持 X11 Server 远程绘制。

1 个赞

更新到最新版,设置如下:

(setq holo-layer-enable-type-animation t)

(setq holo-layer-enable-indent-rainbow t)

(setq holo-layer-sort-tab-ui t)

(holo-layer-enable)

可以看到效果,但出现如下问题:

1.spacemacs启动界面的tab错位

2.多次切换buffer后,tab越来越高

3.indent-rainbow效果在c-v翻页后消失,需要移动一下光标后才会再刷新显示

4.log疯狂刷信息

5.重新启动emacs后,tab和indent都错位显示了

indent先不要开启,这个功能没做完

好吧;其实我主要就是奔着indent来的;关掉indent之后,tab也还是上面的问题;暂时看来用不起来了;

标签问题可以 emacs -Q 排查一下

猫大,我看您博客上有一篇多线程 Emacs 构想的文章

如果那个架构可以实现的话,是不是就能解决我上述的问题了?

远程服务器linux:启动emacs Daemon

本地windows电脑使用PyQt Emacs Client 进行远程连接使用

有可能

再加个 elisp to python transpiler 或者用 python 实现个 elisp interpreter 是不是就可以去掉 Emacs 了。。。

用 C 实现的 elisp 函数得用 python 重写下。

我的setup之前用 holo-layer 一直有点问题,主frame主显示器可以使用,make-frame 新的frame,或者换到旁边的显示器就都不工作了。

这几周看见坛子里mac上的光标动画这些帖子,心里痒得不行,我又不用mac。

遂花了几天时间重新把holo-layer翻出来debug一下子,终于发现问题出在哪里了,修复后一高兴给光标旁边又加了个 QMovie 让我家鸽鸽天天陪我一起写代码。

Peek 2026-01-12 10-05


发一下我定位到的问题和解法,看看有没有别的小伙伴也遇到了同样的问题

环境:

  • ArchLinux X11
  • Emacs 30.1
  • Spacemacs develop长期不更新
  1. 只有主frame才满足 get_active_window_id() == get_emacs_id(),改成了查询 frame-focus-state 后就能保证在任何frame返回True,不在emacs就返回False
  2. 我的环境下,display-monitor-attributes-list 返回格式不太一样,所以 cdar 拿不到 screen idx,导致 screen idx 永远是0, 在我的环境下只需要改成 cdadr 就可以了 (Edit: PR里改成了 alist-get 'geometry 就通用了)
  3. 我的环境下,需要手动 (setq holo-layer-emacs-frame (window-frame) 维护状态,否则下面的 when 条件不满足

所以,像gif里那样修改代码后,我的holo-layer基本上就完全表现正常了,哈皮~

@manateelazycat 也麻烦猫大抽空看看这个解法可以不,问题不大的话我就去PR

2 个赞

欢迎提交PR