Windows下Emacs加载Erlang Wrangler插件出现erlang-xemacs-p未定义错误
解决Emacs启动Wrangler时的
erlang-xemacs-p未定义错误 这个错误的核心原因是Wrangler插件依赖的erlang-xemacs-p变量,在你当前使用的Erlang Emacs模式中已经被移除了,再加上你的.emacs配置里混了多个不同版本的Erlang路径,进一步加剧了加载冲突。下面是具体的修复步骤:
第一步:清理混乱的Erlang路径配置
你的配置里同时引用了erl10.6、erl10.4、erl10.1三个版本的路径,这会让Emacs加载时混乱不堪。先统一成你实际在用的Erlang版本(这里假设是erl10.6),修改相关配置:
;; 统一指向同一个Erlang版本,避免路径冲突 (setq erlang-root-dir "C:\\Users\\ecotjos\\erl10.6") (setq exec-path (cons (concat erlang-root-dir "\\bin") exec-path)) (setq load-path (cons (concat erlang-root-dir "\\lib\\tools-3.3\\emacs") load-path))
第二步:添加缺失的兼容变量
新版Erlang Emacs模式已经移除了erlang-xemacs-p变量,但Wrangler还在引用它。你只需要在加载Wrangler之前手动定义这个变量即可:
;; 定义Wrangler需要的兼容变量,因为你用的是GNU Emacs,所以设为nil (defvar erlang-xemacs-p nil "Compatibility variable for Wrangler") (add-to-list 'load-path "C:\\Users\\ecotjos\\erl10.6\\Wrangler\\elisp") (require 'wrangler)
第三步:使用完整的修正后配置
把上面的内容整合起来,你的.emacs应该改成这样:
;; 统一Erlang版本配置 (setq erlang-root-dir "C:\\Users\\ecotjos\\erl10.6") (setq exec-path (cons (concat erlang-root-dir "\\bin") exec-path)) (setq load-path (cons (concat erlang-root-dir "\\lib\\tools-3.3\\emacs") load-path)) ;; 加载基础模式 (require 'erlang-start) (require 'cc-mode) ;; 配置并加载Wrangler (defvar erlang-xemacs-p nil "Compatibility variable for Wrangler") (add-to-list 'load-path "C:\\Users\\ecotjos\\erl10.6\\Wrangler\\elisp") (require 'wrangler)
重启Emacs后,这个启动错误应该就消失了。如果还有问题,可以检查一下Wrangler是否适配Erlang 10.6版本,或者尝试更新Wrangler到最新的兼容版本。
内容的提问来源于stack exchange,提问作者mrjoe
相关产品推荐
相关产品推荐

