我的emacs/slime设置有什么问题(编译和加载/eval不工作)?
我可以运行emacs并启动slime(使用我的emacs/slime设置有什么问题(编译和加载/eval不工作)?,emacs,lisp,installation,common-lisp,slime,Emacs,Lisp,Installation,Common Lisp,Slime,我可以运行emacs并启动slime(使用M-x slime)。此时,我在低级lisp缓冲区中获得REPL,并可以在那里运行lisp。但是当我在另一个缓冲区中打开lisp代码时,slime Goods没有一个起作用(C-XC-e,C-C-k等等),我在消息缓冲区中不断看到这一点(计数不断增加): 粘液连接:未连接 投票 “/var/folders/B9/B9B5J15dH+aNt5J5gkROEk+++TI/-Tmp-/slime.3202”。。(使用'M-x'中止) 粘液中止连接“”)[69次
M-x slime
)。此时,我在低级lisp缓冲区中获得REPL,并可以在那里运行lisp。但是当我在另一个缓冲区中打开lisp代码时,slime Goods没有一个起作用(C-XC-e
,C-C-k
等等),我在消息缓冲区中不断看到这一点(计数不断增加):
粘液连接:未连接
投票
“/var/folders/B9/B9B5J15dH+aNt5J5gkROEk+++TI/-Tmp-/slime.3202”。。(使用'M-x'中止)
粘液中止连接“”)[69次]
让我觉得slime没有连接到正确的lisp解释器,但因为我对emacs和lisp非常陌生,所以我被困在这里。我的设置是:
- MacOSX雪豹
- 很少定制:而且
- 以下是我为使Common Lisp和Clojure在同一Emacs安装中工作所做的工作,以及出色的Emacs初学者工具包。这不允许您同时使用两者(您必须重新启动Emacs才能从CL切换到Clojure,反之亦然)
我相信ELPA中SLIME的版本很旧,但对Clojure有效。新版本的SLIME对Clojure不起作用。此外,这个版本的SLIME似乎被剥离了(没有swank loader.el?),不能与Common Lisp一起使用
这些是我为使这项工作发挥作用而采取的步骤,这正是对我起作用的。所有的钻头都在积极开发中,所以我认为这一领域很有可能出现断裂
使用新的Emacs(完全没有配置,因此暂时将任何东西移动到其他地方)安装ELPA:
从Emacs内部安装软件包“slime”和“slime repl”。(
M-x软件包列表软件包
然后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初学者工具包并将其移动到.emacs.d
。我只是用technomancy的Github的一个新副本做了这件事,所以如果你有问题,请先尝试一下
使用CVS获取最新的粘液:
cvs -d :pserver:anonymous:anonymous@common-lisp.net:/project/slime/cvsroot co cvs-slime
我认为OSX没有安装CVS,所以您需要从Macports、自制软件或其他软件安装它
我在~/hacking/lisp
中放入了cvs slime
希望下面的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"]])
然后:
编辑以添加:
如果在使用此设置时发现SLIME REPL中的Paredit已损坏,请检查以下内容:
至少还有一个潜在的问题是,AFAICT,如果您打开一个公共Lisp源文件,然后启动SLIME,您将无法将表单从第一个缓冲区发送到SLIME缓冲区。所以,在打开任何公共Lisp源文件之前,先打开一个SLIME缓冲区,它应该可以工作。这似乎不适用于Clojure
参考资料:
如果您在系统中正确安装了slime,那么最好使用sbcl并在
~/.emacs中添加以下行
(setq低级lisp程序“/usr/bin/sbcl”)
/usr/bin/sbcl可以根据您的sbcl安装路径而有所不同。BTW-我尝试删除我的自定义设置,但仍然无法正常工作。我只剩下:(setq-substander-lisp-program)/usr/local/bin/clisp”)(添加到列表“加载路径”~/code/playway/lisp/slime/)(需要“slime”(slime-setup),所以这个设置适用于Clojure和slime,但不适用于clisp-slime集成。不知何故,当我说M-x slime common lisp时,它仍然在使用来自elpa的slime。如何修复此问题?请在使用M-x slime common lisp
之前尝试重新启动Emacs。Emacs向导可能会在加载CVS one之前说明如何卸载ELPA SLIME,但我不知道如何操作。是的,我在尝试M-x SLIME common lisp
之前确实重新启动了Emacs。然而,ESK在我的slime cvs 1之前加载elpa/slime*,因此出现了问题。我也会尝试询问esk问题。谢谢,回来报到!我挣扎于此,可能没有像我应该做的那样仔细记录。这对我来说似乎很有效,但也许我做了些别的事情。好的,今晚下班后我看了一下我的设置,并更新了我的答案。我所做的不同之处是下载ELPA版本的SLIME,然后将其放在独立的地方,不受emacs初学者工具包附带的ELPA的管理。这是一个非常脆弱的设置,因为如果swank clojure需要更新版本的SLIME和ELPA,您必须修复此问题,因此需要一点婴儿看护。另一方面,我读到ELPA在Emacs的下一个主要版本之前一直被忽视,所以它可能在一段时间内是安全的。祝你好运,如果对你有用,请告诉我!
$ lein deps
$ lein swank