加强版lisp-extra-font-lock

上次我在坛子里发了一个colourful.el,可以根据运行时信息来对lisp symbol进行语法高亮,但是它存在几个局限(我想大家都能猜出来),加之以Emacs的灵车font-lock trigger,以至于有时用起来并不太舒服。于是这两天fork了一份lisp-extra-font-lock-mode,让它支持高亮所有common lisp标准函数和宏、冒号前的包名、星号包起来的变量名等等。如图所示:

在这边分享一下,如果有写CL的可以自取。鉴于原作者已经好几年没理过issue和pr了,我也不指望提PR它能merge。如果真的有需要的话可能只能新建一个lisp-extra-extra-font-lock了hhhhhh

(实现是很暴力的,ANSI CL的所有函数一共就千八百个,直接一个regexp-opt装了进去,不过对新版的emacs来说已经不会卡了。Emacs的标准函数太多,我试了试,一个正则装不下,感觉会影响性能,就没有做了)

7 个赞

手动点赞

懒猫老板好,感谢支持^w^!昨天入手了老板的懒猫微服,武汉亲自送货上门,也算面到老板了。还拉了专门的VIP支持群,这服务态度真的没得说。

到手比mac mini还要小一圈,七种系统/架构支持齐全,老板手把手教我用手机一键setup,x86_64+大内存够我玩一年了

来坛子晒一晒,合照就不发了w

2 个赞

分享一个我很多年用过的方法

flex.el 会在 after-change-functions 这个 hook 后面挂一个 overlays 的方法。

用 overlay 的方法是, 你可以在现有的模式下, 增加你想加的关键字高亮, 而不用写更复杂的正则,更复杂的正则虽然最终也会达到同样的目的,但是更复杂的正则也会导致性能问题。

因为Emacs在大文件执行大量 keywords 正则规则时,会严重的拖慢渲染速度,要同时保证更多渲染又保持性能,需要很久的调试时间。

还有一个治本的方法就是用 treesitter 来写一个新的, 这样会比正则匹配效率高很多。

PS: 感谢对我创业的支持, 官方开发者手册在 https://developer.lazycat.cloud/ ,读一下会解锁更多玩法, happy hacking

2 个赞