6

我可以运行 emacs 并启动 slime(使用M-x slime)。在这一点上,我在 suber -lisp缓冲区中获得了 REPL,并且可以在那里运行 lisp。但是,当我在另一个缓冲区中打开 lisp 代码时,所有的粘液都不起作用(C-x C-e等等),我一直在消息C-c C-k缓冲区中看到这个(计数数增加):

粘液连接:未连接。

轮询“/var/folders/B9/B9B5J15dH+aNt5J5gkROEk+++TI/-Tmp-/slime.3202”..(使用 `Mx slime-abort-connection' 中止。)[69 次]

让我觉得 slime 没有连接到正确的 lisp 解释器,但是由于我对 emacs 和 lisp 很陌生,所以我被困在这里。我的设置是:

4

2 回答 2

6

以下是我为使 Common Lisp 和 Clojure 在同一个 Emacs 安装以及出色的 emacs-starter-kit 中工作所做的工作。这不会让您同时使用两者(您必须重新启动 Emacs 才能从 CL 切换到 Clojure,反之亦然)

我相信 ELPA 中的 SLIME 版本很旧,但适用于 Clojure。较新版本的 SLIME 不适用于 Clojure。此外,这个版本的 SLIME 似乎被剥离了(没有 swank-loader.el?)并且不能与 Common Lisp 一起使用。

这些是我为使其工作而采取的步骤,这对我有用。所有的钻头都在积极开发中,所以我认为这个领域很可能会被破坏。

使用新的 Emacs(根本没有配置,所以暂时将任何东西移到其他.emacs地方)安装 ELPA:

http://tromey.com/elpa/install.html

在 Emacs 中,安装包“slime”和“slime-repl”。(M-x package-list-packages然后选择并C-s slime安装)ix

将文件移入~/.emacs.d/elpa/slime-20100404~/.emacs.d/elpa/slime-repl-20100404移至新目录,例如~/hacking/lisp/elpa-slime.

扔掉 ELPA 安装:$ rm -rf .emacs.d.

现在克隆 emacs-starter-kit 并将其移动到.emacs.d. 我只使用来自 technomancy 的 Github 的新副本进行此操作,因此如果您有问题,请先尝试。

使用 CVS 获取最新的 SLIME:

cvs -d :pserver:anonymous:anonymous@common-lisp.net:/project/slime/cvsroot co cvs-slime

我认为 OS X 没有安装 CVS,所以你需要从 Macports、Homebrew 或其他地方安装它。

我放进cvs-slime去了~/hacking/lisp

希望下面的 Emacs Lisp 的作用很明显:

(defun slime-common-lisp ()
  (interactive)
  (setq inferior-lisp-program "/usr/local/bin/sbcl") ; your Common Lisp impl
  (add-to-list 'load-path "~/hacking/lisp/cvs-slime/")  ; your SLIME from CVS directory
  (require 'slime)
  (slime-setup '(slime-repl))
  (slime))

(defun slime-clojure ()
  (interactive)
  (add-to-list 'load-path "~/hacking/lisp/elpa-slime")
  (require 'slime)
  (slime-setup '(slime-repl))
  (slime-connect "localhost" 4005))

对于 Clojure,您必须swank-clojure在端口 4005 上启动 Clojure 运行时,我认为使用 Leiningen 是经过批准的方法:

创建一个新项目:

$ lein new project
$ cd project

project.clj

(defproject newclj "1.0.0-SNAPSHOT"
    :description "FIXME: write"
    :dependencies [[org.clojure/clojure "1.2.0"]
                   [org.clojure/clojure-contrib "1.2.0"]]
    :dev-dependencies [[swank-clojure "1.2.1"]])

然后:

$ lein deps
$ lein swank

编辑添加:

如果您在使用此设置时发现 SLIME REPL 中的 Paredit 损坏,请查看: http ://www.emacswiki.org/emacs/ParEdit#toc3

至少还有一个潜在的问题是,AFAICT,如果您打开 Common Lisp 源文件然后启动 SLIME,您将无法将表单从第一个缓冲区发送到 SLIME 缓冲区。所以在打开任何 Common Lisp 源文件之前打开一个 SLIME 缓冲区,它应该可以工作。这似乎不适用于 Clojure。

参考:

clojure 和 common lisp 的 emacs 设置,带有 slime-fancy (slime-autodoc)

https://github.com/technomancy/swank-clojure/issues/closed#issue/31/comment/544166

于 2010-12-29T15:35:31.853 回答
1

如果您在系统中正确安装了slime,那么最好使用sbcl并在您的系统中添加以下行~/.emacs (setq inferior-lisp-program "/usr/bin/sbcl")

/usr/bin/sbcl可以根据您的sbcl安装路径而有所不同。

于 2016-03-07T10:44:58.350 回答