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

时间:2010-12-29 03:35:29

标签: emacs lisp installation common-lisp slime

我可以运行emacs并启动slime(使用M-x slime)。此时我在 inferior-lisp 缓冲区中获取REPL并可以在那里运行lisp。但是当我在另一个缓冲区中打开lisp代码时,没有任何粘合剂可以正常工作(C-x C-eC-c C-k等等)而且我会在 Messages 缓冲区中看到这一点(带有越来越多的计数数字):

  

slime-connection:未连接。

     

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

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

2 个答案:

答案 0 :(得分: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 slime然后i选择并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。我只使用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,你必须在端口4005上启动Clojure运行时和swank-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。

参考文献:

emacs setup for both clojure and common lisp with slime-fancy (slime-autodoc)

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

答案 1 :(得分:0)

如果您在系统中正确安装 slime ,请更好地使用 sbcl 并在<script> function range-value() { var range = document.getElementById("random-range"); return range.value; } </script> <div class="plot-example" data-plot-xMin="-1"></div> <div class="plot-example" data-plot-xMin="range-value"></div> 中添加以下行 ~/.emacs

根据您的 sbcl 安装路径,

/ usr / bin / sbcl 可能会有所不同。