[求助]void-function defvar-keymap

今天更新Emacs 的包,flymake调用了 defvar-keymap, 但我的Emacs 版本是GNU Emacs 28.1 (build 2, aarch64-apple-darwin21.3.0, NS appkit-2113.30 Version 12.2 (Build 21D49)) of 2022-05-18 ,没有这个函数。

这个函数是 emacs 29 里的

我在doom-emacs 里面找不到哪里安装了flymake,packages.el里面也没有安装,但我的straight文件夹里面的两个子文件夹repos和build-28.1里面都有最新的flymake,不知道哪里安装的。

肯定是某个包依赖了,然后 straight 给下载下来了.

加这一行:

 (straight-use-package '(flymake :type built-in))

感谢感谢!可以啦!

defvar-emacs 是 Emacs 29 新增的宏,Emacs 28 自带有兼容的 flymake,一般情况下不必从 ELPA 下载。

抱歉,Emacs 29 的 Flymake 最低兼容 emacs 26.1,我已经去除了其中调用 defvar-keymap 的部分。

他们是因为用了 straight,straight 会自动下载一些内置的包,比如 flymake jsonrpc org project xref 。

需要通过下面的设置,明确声明这些包使用内置的:

(dolist (pkg '(eldoc flymake jsonrpc org project xref))
  (add-to-list 'straight-built-in-pseudo-packages pkg))

我的emacs版本还是25.1.1,请教一下有没有那个函数可以替代defvar-keymap。

这个包解决旧版本兼容问题:

https://elpa.gnu.org/packages/compat.html

1 个赞

:ok_hand:,可以了,感谢!