SLIME
我对Clojure和emacs都比较新手,一直在尝试为Clojure设置SLIME。官方文档(链接)默认你已经熟练掌握emacs的使用,没有一大堆可以添加到配置文件中的代码。由于我对Clojure数据分析很感兴趣,如果可能的话,我不想处理Leiningen,但是我需要slime提供的动态环境。
我已经从git中安装了Clojure并在/opt/clojure/
中安装了clojure-contrib,而且我可以得到一个repl。我从这个教程中在`~/.bin`中安装了swank-clojure、clojure-mode和slime。当这个方法不能正常工作时,我从官方文档的评论部分添加了一些东西。
M-x slime
启动slime时,我会得到一个持续的Polling "/tmp/slime.14113".. (Abort with 'M-x slime-abort-connection'.)
。这是我的init-clj.el:
;; clojure-mode
(add-to-list 'load-path "~/.bin/clojure-mode")
;; swank-clojure
(add-to-list 'load-path "~/.bin/swank-clojure")
(setq swank-clojure-jar-path "/opt/clojure/clojure.jar"
swank-clojure-extra-classpaths (list
"~/.bin/swank-clojure/src/swank"
"/opt/clojure/clojure-contrib/target/clojure-contrib-1.2.0-SNAPSHOT.jar"))
(require 'swank-clojure)
;; slime
(eval-after-load "slime"
'(progn (slime-setup '(slime-repl))))
(add-to-list 'load-path "~/.bin/slime")
(require 'slime)
(eval-after-load 'slime '(setq slime-protocol-version 'ignore))
(slime-setup '(slime-repl))
(require 'clojure-mode)
(require 'clojure-test-mode)
当我打开ants.clj并调用它时,出现以下错误:
(progn (load "/home/kca/.bin/slime/swank-loader.lisp" :verbose t) (funcall (read- from-string "swank-loader:init")) (funcall (read-from-string "swank:start-server") "/tmp/slime.14113" :coding-system "iso-latin-1-unix"))
Clojure 1.2.0-master-SNAPSHOT
user=> java.lang.Exception: Unable to resolve symbol: progn in this context (NO_SOURCE_FILE:1)
劣质的Lisp
我在.bin/
中创建了一个名为clj-repl的脚本,其中包含启动repl的java命令。然后我使用M-x set-variable inferior-lisp-program /home/wdkrnls/.bin/clj-repl。Emacs抱怨它是错误的类型。
M-x set-variable inferior-lisp-program
,然后跟随脚本路径,请确保将路径用双引号括起来;否则它不会被读取为字符串,Emacs会抱怨结果类型(可能是符号)。如果这没有帮助,您可以提供有关脚本的更多详细信息以及在Emacs中执行的操作(或~/.emacs
/~/.emacs.d/init.el
)以将其设置为您的劣质Lisp程序。 - Michał Marczyk