我可以运行emacs并启动slime(使用M-x slime
)。此时我在 inferior-lisp 缓冲区中获取REPL并可以在那里运行lisp。但是当我在另一个缓冲区中打开lisp代码时,没有任何粘合剂可以正常工作(C-x C-e
,C-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很新,所以我被困在这里。我的设置是:
答案 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
/ usr / bin / sbcl 可能会有所不同。