我的emacs/slime设置有什么问题(编译和加载/ eval无法正常工作)?

arn*_*nab 6 lisp emacs installation common-lisp slime

我可以运行emacs并启动slime(with M-x slime).此时,我在劣质lisp缓冲区中获取REPL 并可以在那里运行lisp.但是,当我在另一个缓冲区没有粘液,善良作品(的开拓Lisp代码C-x C-e,C-c C-k等等),我一直在看到这个消息的缓冲区(用编码器脉冲数数):

粘连:未连接.

轮询 "/var/folders/B9/B9B5J15dH+aNt5J5gkROEk+++TI/-Tmp-/slime.3202" ..(中止与`的Mx煤泥中止连接".)[69倍]

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

mic*_*kig 6

以下是我在同一个Emacs安装中使用Common Lisp和Clojure以及优秀的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 slimei选择和x安装)

将文件移入~/.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.我只用技术性的Github的新副本做了这个,所以如果你遇到问题就先试试.

使用CVS获取最新的SLIME:

cvs -d :pserver:anonymous:anonymous@common-lisp.net:/project/slime/cvsroot co cvs-slime
Run Code Online (Sandbox Code Playgroud)

我不认为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))
Run Code Online (Sandbox Code Playgroud)

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

创建一个新项目:

$ lein new project
$ cd project
Run Code Online (Sandbox Code Playgroud)

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"]])
Run Code Online (Sandbox Code Playgroud)

然后:

$ lein deps
$ lein swank
Run Code Online (Sandbox Code Playgroud)

编辑添加:

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

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

参考文献:

使用slime-fancy(slime-autodoc)设置clojure和常见lisp的emacs

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