【问题标题】:slime doesn't work in emacs24粘液在 emacs24 中不起作用
【发布时间】:2012-02-28 00:45:50
【问题描述】:

我在archlinux中使用emacs24。如果我使用来自marmalade.org的slime包,那么当我使用M-x slime时错误是:

debugger invoked on a SB-INT:SIMPLE-FILE-ERROR in thread
#<THREAD "initial thread" RUNNING {AB007A9}>:
  Couldn't load
  "/home/sinners/.emacs.d/elpa/slime-20100404.1/swank-loader.lisp": file does
  not exist.

Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.

restarts (invokable by number or by possibly-abbreviated name):
  0: [ABORT] Exit debugger, returning to top level.

但是如果我使用官方网站的 slime-cvs 包,错误是:

Debugger entered: (("Error in timer" slime-attempt-connection (#<process inferior-lisp> nil 2) (void-variable --cl-accu--)))
  #[257 "\302\303\304\300\301F\"\207" [slime-attempt-connection (#<process inferior-lisp> nil 2) debug nil "Error in timer"] 7 "\n\n(fn DATA)"]((void-variable --cl-accu--))
  funcall(#[257 "\302\303\304\300\301F\"\207" [slime-attempt-connection (#<process inferior-lisp> nil 2) debug nil "Error in timer"] 7 "\n\n(fn DATA)"] (void-variable --cl-accu--))
  slime-timer-call(slime-attempt-connection #<process inferior-lisp> nil 2)
  apply(slime-timer-call (slime-attempt-connection #<process inferior-lisp> nil 2))
  byte-code("r\301\302H\303H\"\210)\301\207" [timer apply 5 6] 4)
  timer-event-handler([t 20271 59188 161536 0.3 slime-timer-call (slime-attempt-connection #<process inferior-lisp> nil 2) nil])

谁能帮帮我?

【问题讨论】:

    标签: emacs slime emacs24


    【解决方案1】:

    我不确定,但这个问题可能是由于SLIMESWANK 的不同版本造成的。但是,您应该只使用pacman 安装一个lisp 实现(我认为SBCL 是Linux 上最流行的实现),然后使用quicklisp 安装其他所有东西。

    请参阅this 博客文章,了解如何使用quicklisp 安装SWANKSLIME

    【讨论】:

    • 但是我不能先用slime,所以有办法谈谈quicklisp
    • SLIME 和 Quicklisp 是完全不同和独立的两件事。 SLIME 使用 SWANK 作为 Emacs 和 Lisp 进程之间的接口。 Quicklisp 是一个使用 ASDF 的库管理器。你可以,而且你应该使用 Quicklisp 来安装所有与 Common Lisp、SWANK 和 SLIME 相关的东西。在我上面给出的链接中,它的作者解释了如何安装 SLIME 和 quicklisp-slime-helper 以及如何将它们与 Emacs 一起使用。
    • 是的,我明白了。现在粘液起作用了。当我知道一些基本的 lisp 时,我会尝试 quicklisp。
    【解决方案2】:

    --cl-accu-- 变量标志的问题是关于在存在词法作用域的情况下破坏 emacs cl 包。尝试在你的粘液分布中转到slime.el,找到字符串 ;; lexical-binding: t 在文件末尾的;; Local Variables: 部分中,并将其更改为;; lexical-binding: nil。并删除旧的slime.elc 文件(如果有的话)。

    【讨论】:

    • 这在我将 (slime-setup '(slime-fancy)) 添加到 .emacs 后有效。
    【解决方案3】:

    我遇到了完全相同的问题,通过删除我之前使用 byte-recompile-directory 编译的 slime.elc 文件解决了这个问题。我没有尝试再次编译它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 2012-01-13
      • 2015-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多