![](/img/trans.png)
[英]Clojure 1.2 is released! How to get swank-clojure to use this?
[英]How to use clojure doc function?
我只是從Clojure開始,無法訪問doc函數。
我正在將clojure 1.3與emacs24和swank-clojure一起使用。
user> *clojure-version*
{:major 1, :minor 3, :incremental 0, :qualifier nil}
但是當我嘗試:
(doc doc)
我得到:
Unable to resolve symbol: doc in this context
[Thrown class java.lang.RuntimeException]
我已經閱讀了為什么REPL會將clojure.core / doc視為var? 並建議:
(clojure.repl/doc doc)
但是然后,我收到:
clojure.repl
[Thrown class java.lang.ClassNotFoundException]
看來我不是在“導入”常用的名稱空間,但實際上不知道該怎么做。
謝謝。
更新
使用Java中的clojure(java -jar ...)效果很好,因此emacs設置存在問題。
您需要以一種或另一種方式獲取clojure.repl命名空間:
來自REPL
user> (use 'clojure.repl)
user> (doc doc)
或在您的程序中
(ns foobar
(:use [clojure.repl]))
將以下內容添加到您的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)))
對於使用Clojure 1.3.0及更高版本的項目,這將導致Leiningen在啟動時自動導入這兩個名稱空間(但對於使用Clojure 1.2.1或更早版本的項目,則不會導入該名稱空間-doc和源始終可用)。
這要歸功於馬修·波士頓 。 還請注意, Phil Hagelberg的答復指出大多數REPL特定功能可以在Emacs / Slime中直接訪問,而無需直接在REPL中使用。
從Lein 2開始,可以使用
:injections
在啟動時自動導入名稱空間,例如:
;; ~/.lein/profiles.clj {:user {:plugins [[lein-swank "1.4.4"] [lein-noir "1.2.1"] [lein-pprint "1.1.1"]] :injections [(use 'clojure.repl) (use 'clojure.java.javadoc) (use 'clojure.pprint)] }}
但是,請參閱其他與SLIME等效的響應。
is available at the repl by default. 我不確定當這成為案件的,但作為雷音的2.2 可在默認情況下,REPL。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.