Emacs 27.0.50安装flycheck-irony遇rx-submatch-n未定义错误求助
解决flycheck-irony安装时的
rx-submatch-n未定义错误 这个问题我之前碰到过好几次,根源很清晰——你的Emacs版本不兼容!rx-submatch-n是Emacs 27.1才正式加入的内置函数,而你用的27.0.50是27.1发布前的开发预览版,根本没有这个函数,所以flycheck-irony调用它的时候就直接报错了。
下面给你几个可行的解决办法,按优先级排序:
1. 升级Emacs到27.1或更高版本(最推荐)
这是一劳永逸的方案,直接解决版本兼容问题:
- 如果你用的是Linux发行版,优先用系统包管理器更新,比如Debian/Ubuntu系跑
sudo apt update && sudo apt install emacs,Fedora系用sudo dnf update emacs。 - 如果包管理器里的版本还是不够新,就去Emacs官网下载最新稳定版源码编译,步骤大概是:
- 解压源码包后进入目录
- 执行
./configure --with-gtk3(和你当前的GTK版本保持一致) - 执行
make && sudo make install
2. 手动添加rx-submatch-n函数定义(不用升级)
要是暂时不想折腾升级,把这段代码放到你的Emacs配置文件(比如~/.emacs.d/init.el)最开头,保存后重启Emacs,再安装flycheck-irony就没问题了:
(defun rx-submatch-n (n) "Return an RX form matching the Nth submatch. N must be a positive integer." (if (= n 0) 'submatch (list 'submatch n)))
这段代码是直接从Emacs 27.1的源码里扒出来的,完全能满足flycheck-irony的调用需求。
3. 安装旧版本的flycheck-irony
你可以去找flycheck-irony仓库里支持Emacs 27.0的旧提交,或者在MELPA里指定安装较早的版本。不过这个方法不太推荐,因为后续会错过插件的功能更新和bug修复,除非你实在没法升级Emacs。
内容的提问来源于stack exchange,提问作者zhyd1997
相关产品推荐
相关产品推荐

