doom emacs中缺少`(require 'subr-x)`的问题

一直用的Doom,尽管官方不支持,今天还是兴冲冲的切换到emacs 29,果不其然出事了。

Debugger entered--Lisp error: (void-function string-remove-suffix)
  (string-remove-suffix ".el" doom-autoloads-file)

本来以为会是什么很难的问题,原来是core.el里面调用了这个函数,但是没有导入定义该函数的包。仓库里的代码也一样没有(require 'subr-x)

查到李杀网里面 http://xahlee.info/emacs/emacs/elisp_trim_string.html 图片

这篇最后更新都是2018年了。

issue里面好像也没看到有人提到这个问题(也可能是我眼神不太好)。

现在我就是感觉比较迷惑这是怎么回事。

27&28 也是需要显式的加载,除非你把用到 string-remove-suffix 的文件编译成 .elc,因为在编译的过程中会自动加载 subr-x

我印象中 doom 好像有个 cli 工具,你可能需要执行它对 29 进行初始化。

你还可以直接在 early-init.el 加载 subr-x

感谢,很有用。

doom compile 可以把moule都编译成.elc文件。单独编译core.el后问题就解决了。不过全部编译后vertico又报错了,二进制文件还不好debug,所以也只能编译core.el