如何导入GitHub MELPA获取器?解决Emacs中github变量未定义报错
解决Emacs中「Symbol's value as variable is void: github」错误
问题原因
你最后一行的配置代码(idris-mode :repo "idris-hackers/idris-mode" :fetcher github :files (:defaults "logo-small.png"))用的是Quelpa(或配合use-package扩展)的包安装语法,而原生Emacs的package.el并不认识:fetcher github里的github变量——这个变量是Quelpa这类第三方包管理器定义的,直接运行就会触发"Symbol's value as variable is void"错误。
解决方案
方案1:用原生package.el安装(最简单)
你已经在配置里把idris-mode加入了package-selected-packages,且配置了MELPA Stable源,完全不需要额外的GitHub获取配置:
- 删除最后那行报错的配置代码
- 重启Emacs,或者在Emacs内执行命令
M-x package-install-selected-packages,等待idris-mode安装完成即可
方案2:用Quelpa从GitHub直接安装(适合需要最新源码的场景)
如果你确实需要从GitHub仓库拉取最新版的idris-mode,得先安装Quelpa包管理器,让Emacs识别github这类获取器变量:
- 在
.emacs文件开头添加Quelpa的自安装代码:(unless (package-installed-p 'quelpa) (with-temp-buffer (url-insert-file-contents "https://raw.githubusercontent.com/quelpa/quelpa/master/quelpa.el") (eval-buffer) (quelpa-self-upgrade))) - 把原来报错的代码替换为Quelpa的安装语法:
(quelpa '(idris-mode :repo "idris-hackers/idris-mode" :fetcher github :files (:defaults "logo-small.png"))) - 重启Emacs,Quelpa会自动从GitHub拉取并安装
idris-mode
额外小提示
你的配置里重复开启了global-flycheck-mode:既有(global-flycheck-mode)又有(add-hook 'after-init-hook #'global-flycheck-mode),建议保留后者(延迟到初始化完成后开启更稳妥),删掉前者避免重复执行。
内容的提问来源于stack exchange,提问作者bbarker
相关产品推荐
相关产品推荐

