SLIME无法从Emacs中加载

3

我最近从Emacs的package-list-packages更新了SLIME。然而,当我尝试使用M-x slime运行它时,我得到了以下信息:

(progn (load "/home/koz/.emacs.d/elpa/slime-20140913.730/swank-loader.lisp" :verbose t) (funcall (read-from-string "swank-loader:init")) (funcall (read-from-string "swank:start-server") "/tmp/slime.3081"))

* 
; loading #P"/home/koz/.emacs.d/elpa/slime-20140913.730/swank-loader.lisp"
;; 
;; Error while compiling /home/koz/.emacs.d/elpa/slime-20140913.730/swank/backend.lisp:
;;   Failed to find the TRUENAME of /home/koz/.emacs.d/elpa/slime-20140913.730/swank/backend.lisp:
;;     No such file or directory
;; Aborting.
;; * 

之后我还有REPL,但我认为这很奇怪,我想知道发生了什么以及原因。


你使用的是哪种 Lisp? - echristopherson
@echristopherson:SBCL。 - Koz Ross
我使用那个版本的SLIME和SBCL 1.2.1时也遇到了完全相同的错误。也许降级SLIME会有所帮助。 - echristopherson
好吧,那我就得试试了。可能应该向SLIME的维护者记录一个bug或其他问题。 - Koz Ross
2个回答

5
Freenode的#lisp频道上,我与一位人士交谈,他同意MELPA中当前版本的SLIME(20140913.730)已经损坏。在我的系统上,整个$HOME/.emacs.d/elpa/slime-20140913.730/swank/目录都不见了,这可能是为什么无法编译其中找到的Lisp文件的原因。
该频道的其他成员建议从Quicklisp安装SLIME;我这样做了,它工作正常,虽然那里的SLIME版本略旧(日期为2014-08-01)。以下是我的操作步骤(我之前没有安装Quicklisp);请根据您的系统和喜好进行调整:
  1. 从Emacs的软件包列表中卸载SLIME(执行M-x list-packages,找到SLIME所在行,按下d,然后按下x)。
  2. 访问http://www.quicklisp.org/beta/并下载绿色框中的文件(在我的情况下,它放在了~/Downloads中)。
  3. 将SBCL升级到1.2.2或更高版本。这可能有些过度。
  4. 启动sbcl
  5. 评估(load "~/Downloads/quicklisp.lisp")
  6. 评估(quicklisp-quickstart:install);可选地,如果您不想将其安装在~/quicklisp中,请添加:path "~/.quicklisp/"(替换为您实际想要安装的目录)。
  7. 通过评估(ql:quickload "swank")来安装SLIME和SWANK。
  8. 可选:评估(ql:add-to-init-file)以修补您的.sbclrc,以便始终在SBCL中加载Quicklisp。
  9. 使用Ctrl+D退出SBCL。
  10. 根据SLIME的自述文件所示调整您的Emacs配置文件。对于路径条目,请使用"~/quicklisp/dists/quicklisp/software/slime-2.9"(根据您安装Quicklisp的路径进行调整)。
  11. 重新启动Emacs,M-x slime应该可以工作了。

1
谢谢帮助!我只是在寻找完全相同的答案。我发现删除原始的Slime软件包是必要的(M-x list-packages,将光标移到Slime上,按d进行标记,然后按x进行删除)。 - tomwalker
@tomwalker 谢谢。我已经将它编辑到答案中了。 - echristopherson

4
这是由于在您的Slime文件夹中丢失了swank子目录引起的。要修复它,您可以从GitHub上简单地下载slime并将swank文件夹复制到您的Slime安装路径中,对于您的情况是/home/koz/.emacs.d/elpa/slime-20140913.730/然后重新启动Slime。它将被正确加载。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接