zaf*_*ras 36 emacs doc clojure classnotfoundexception
我刚开始使用Clojure而无法访问doc函数.
我正在使用clojure 1.3和emacs24以及swank-clojure.
user> *clojure-version*
{:major 1, :minor 3, :incremental 0, :qualifier nil}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试:
(doc doc)
Run Code Online (Sandbox Code Playgroud)
我明白了:
Unable to resolve symbol: doc in this context
[Thrown class java.lang.RuntimeException]
Run Code Online (Sandbox Code Playgroud)
我读过为什么REPL将clojure.core/doc视为var?并按照建议:
(clojure.repl/doc doc)
Run Code Online (Sandbox Code Playgroud)
但接着,我收到:
clojure.repl
[Thrown class java.lang.ClassNotFoundException]
Run Code Online (Sandbox Code Playgroud)
我似乎并没有"导入"通常的命名空间,但实际上并不知道该怎么做.
谢谢.
UPDATE
使用java中的clojure(java -jar ...)它运行良好,所以这是emacs设置的问题.
Jul*_*ang 56
您需要以某种方式获取clojure.repl命名空间:
来自REPL
user> (use 'clojure.repl)
user> (doc doc)
Run Code Online (Sandbox Code Playgroud)
或者在你的程序中
(ns foobar
(:use [clojure.repl]))
Run Code Online (Sandbox Code Playgroud)
Sea*_*eld 15
将以下内容添加到Leiningen user.clj文件中(在Mac/Linux上,它是〜/ .lein/user.clj):
;; ~/.lein/user.clj
(if (>= (.compareTo (clojure-version) "1.3.0") 0)
(do (use 'clojure.repl)
(use 'clojure.java.javadoc)))
Run Code Online (Sandbox Code Playgroud)
这将导致Leiningen在启动时为使用Clojure 1.3.0及更高版本的项目自动导入这两个名称空间(但不适用于使用Clojure 1.2.1或更早版本的项目 - 其中doc和source始终可用).
幸得马修波士顿这一点.另请注意,Phil Hagelberg的回复指出大多数特定于REPL的功能可直接在Emacs/Slime中访问,而无需直接在REPL中使用这些功能.
归档时间: |
|
查看次数: |
8864 次 |
最近记录: |