diff options
author | Rich Hickey <richhickey@gmail.com> | 2009-01-23 01:18:36 +0000 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2009-01-23 01:18:36 +0000 |
commit | 21caa3eb5209802f0359b00801eca6943c78580a (patch) | |
tree | b6cb06bf14ecb8adda7eec94ee6df44729c74f27 | |
parent | 92a2a0477e3d056cf596a256e7787e1ad4caa3f1 (diff) |
Added doc string to ns macro, patch from mb
-rw-r--r-- | src/clj/clojure/core.clj | 20 | ||||
-rw-r--r-- | src/jvm/clojure/lang/Namespace.java | 3 |
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 +} |