我从slime repl中找到以下内容(未找到clojure.contib函数):
M-X slime
user=> (:require 'clojure.contrib.string)
nil
user=> (doc clojure.contrib.string/blank?)
java.lang.Exception: Unable to resolve var: clojure.contrib.string/blank? in this context (NO_SOURCE_FILE:10)
以下从控制台启动clojure时(但这里找到的一切都好):
adr@~/clojure/cloj-1.2$ java -cp /home/adr/clojure/cloj-1.2/clojure.jar:/home/adr/clojure/cloj-1.2/clojure-contrib.jar -server clojure.main
user=> (:require 'clojure.contrib.string)
nil
user=> (doc clojure.contrib.string/blank?)
-------------------------
clojure.contrib.string/blank?
([s])
True if s is nil, empty, or contains only whitespace.
nil
在我的.emacs中,我有以下内容:
(setq inferior-lisp-program "java -cp /home/adr/clojure/cloj-1.2/clojure.jar:/home/adr/clojure/cloj-1.2/clojure-contrib.jar -server clojure.main")
我的clojure罐子(1.2)位于'/home/adr/clojure/cloj-1.2'。
我是emacs的新手,一直在关注一些教程。有一段时间我一直试图使用Emacs的clojure.contrib库,但“M-X slime”找不到clojure.contrib。请帮忙
编辑:如果这会有所帮助,现在我看到使用M-X史莱姆时会有消息:
(progn (load "/home/adr/.emacs.d/elpa/slime-20100404/swank-loader.lisp" :verbose t) (funcall (read-from-string "swank-loader:init")) (funcall (read-from-string "swank:start-server") "/tmp/slime.4493" :coding-system "iso-latin-1-unix"))
Clojure 1.2.0
user=> java.lang.Exception: Unable to resolve symbol: progn in this context (NO_SOURCE_FILE:1)
Edit2:但是如果我在目录中启动了“lein swank”之后使用MX slime-connect,则没有这样的错误消息(尽管即使以“MX slime-connect”开头也有REPL中没有找到clojure-contrib库(尽管leiningen将它们作为依赖项下载)。
答案 0 :(得分:1)
这一行:
(progn (load "/home/adr/.emacs.d/elpa/slime-20100404/swank-loader.lisp" :verbose t) (funcall (read-from-string "swank-loader:init")) (funcall (read-from-string "swank:start-server") "/tmp/slime.4493" :coding-system "iso-latin-1-unix"))
是Common Lisp,而不是Clojure,但由于您将inferior-lisp-program
设置为Clojure,slime
无法启动swank
服务器。
请参阅swank-clojure project中的以下部分:
您想要的功能可能在swank-clojure.el,但不建议再使用。
因为你已经在使用ELPA:
add-to-list 'package-archives
'("technomancy" . "http://repo.technomancy.us/emacs/") t)
M-x package-install ;(slime-repl)
M-x slime-connect
答案 1 :(得分:1)
在我看来,我使用错误的方式在REPL中“需要”库(由于我对clojure缺乏经验);使用如下语法时:
user=> (require 'clojure.contrib.string)
nil
user=> (clojure.contrib.string/blank? "asd")
false
所有库都被找到了(无论是使用“M-X slime”进行非swank REPL还是使用“M-X slime-connect”进行swank服务器)。所以这完全是我的错误(我在这个stackoverflow答案中找到了关于我的错误的提示:Why do I get an error when I run (use 'clojure.contrib.repl-utils)?)