summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2009-01-23 01:18:36 +0000
committerRich Hickey <richhickey@gmail.com>2009-01-23 01:18:36 +0000
commit21caa3eb5209802f0359b00801eca6943c78580a (patch)
treeb6cb06bf14ecb8adda7eec94ee6df44729c74f27
parent92a2a0477e3d056cf596a256e7787e1ad4caa3f1 (diff)
Added doc string to ns macro, patch from mb
-rw-r--r--src/clj/clojure/core.clj20
-rw-r--r--src/jvm/clojure/lang/Namespace.java3
2 files changed, 20 insertions, 3 deletions
diff --git a/src/clj/clojure/core.clj b/src/clj/clojure/core.clj
index 9b18b009..34c4868a 100644
--- a/src/clj/clojure/core.clj
+++ b/src/clj/clojure/core.clj
@@ -2762,6 +2762,13 @@
(println type)
(println (str " Please see http://clojure.org/special_forms#" anchor)))
+(defn print-namespace-doc
+ "Print the documentation string of a Namespace."
+ [nspace]
+ (println "-------------------------")
+ (println (str (ns-name nspace)))
+ (println " " (:doc ^nspace)))
+
(defmacro doc
"Prints documentation for a var or special form given its name"
[name]
@@ -2771,7 +2778,10 @@
(syntax-symbol-anchor `~name)
`(print-special-doc '~name "Syntax Symbol" (syntax-symbol-anchor '~name))
:else
- `(print-doc (var ~name))))
+ (let [nspace (find-ns name)]
+ (if nspace
+ `(print-namespace-doc ~nspace)
+ `(print-doc (var ~name))))))
(defn tree-seq
"returns a lazy sequence of the nodes in a tree, via a depth-first walk.
@@ -3319,6 +3329,12 @@
(fn [[kname & args]]
`(~(symbol "clojure.core" (clojure.core/name kname))
~@(map #(list 'quote %) args)))
+ docstring (when (string? (first references)) (first references))
+ references (if docstring (rest references) references)
+ name (if docstring
+ (with-meta name (assoc (meta name)
+ :doc docstring))
+ name)
gen-class-clause (first (filter #(= :gen-class (first %)) references))
gen-class-call
(when gen-class-clause
@@ -3789,7 +3805,7 @@
~(emit gpred gexpr clauses))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; helper files ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
+(alter-meta! (find-ns 'clojure.core) assoc :doc "Fundamental library of the Clojure language")
(load "core_proxy")
(load "core_print")
(load "genclass")
diff --git a/src/jvm/clojure/lang/Namespace.java b/src/jvm/clojure/lang/Namespace.java
index 0af1bbda..77335308 100644
--- a/src/jvm/clojure/lang/Namespace.java
+++ b/src/jvm/clojure/lang/Namespace.java
@@ -27,6 +27,7 @@ public String toString(){
}
Namespace(Symbol name){
+ super(name.meta());
this.name = name;
mappings.set(RT.DEFAULT_IMPORTS);
aliases.set(RT.map());
@@ -174,4 +175,4 @@ public void removeAlias(Symbol alias) throws Exception{
map = getAliases();
}
}
-} \ No newline at end of file
+}