emacs - SLIME 未从 Emacs 加载

标签 emacs common-lisp sbcl slime

我最近从 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,但我觉得这很奇怪,我想知道发生了什么以及为什么。

最佳答案

开启 Freenode's #lisp channel ,我与一位同意 MELPA 中当前版本的 SLIME (20140913.730) 的人交谈过。在我的系统上,整个 $HOME/.emacs.d/elpa/slime-20140913.730/swank/目录都丢失了,这可能是它无法编译其中找到的 Lisp 文件的原因。

channel 的其他成员建议从 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. 调整您的 Emacs 配置文件,如 SLIME's readme 所示.对于路径条目,请使用 "~/quicklisp/dists/quicklisp/software/slime-2.9"(根据您安装 Quicklisp 的任何路径进行调整)。
  11. 重启 Emacs 和 M-x slime 应该可以工作了。

关于emacs - SLIME 未从 Emacs 加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25858840/

相关文章:

python - emacs 的 Saltstack 模式

lisp - Common Lisp 中的循环列表

common-lisp - 列表格式的抑扬符

printing - SBCL 切换打印和读取顺序 (lisp)

Emacs/Spacemacs — 将 SLIME `eval-last-expression-in-repl` (, s e) 重新绑定(bind)到 ctrl-enter

emacs - 自动完成弹出式窗口右侧的字母是什么?

emacs - 如何使用 emacs/elisp 高亮部分字体锁定的源代码

function - 在 emacs 中创建切换函数

compilation - 编译器的信号和错误之间的区别 (sbcl 1.2.4)

lisp - 用普通的 lisp 编写一个函数,它将返回一个列表的否定