Skip to content

Instantly share code, notes, and snippets.

@rlm
Created December 19, 2010 18:23
Show Gist options
  • Save rlm/747559 to your computer and use it in GitHub Desktop.
Save rlm/747559 to your computer and use it in GitHub Desktop.
automatic reloading of namespaces
(ns rlm.rlm-commands
(:require [clojure.contrib [duck-streams :as ds]])
(:use [clojure.contrib java-utils]))
(defmacro undef
"removes symbol from the current namespace"
[symbol]
`(ns-unmap *ns* (quote ~symbol)))
(defmacro ns-nuke
"Removes all symbols and all referenced symbols. Use as a last
resort."
([]
(let [current-ns# (symbol (str *ns*))]
`(ns-nuke ~current-ns#)))
([ns]
`(do
(println "NUKING namespace" (quote ~ns))
(clojure.lang.Namespace/remove (quote ~ns))
(ns ~ns))))
(defmacro reload []
`(do
(rlm.rlm-commands/ns-nuke)
(clojure.core/use
:reload-all
(clojure.core/symbol (clojure.core/str clojure.core/*ns*)))))
(defmacro re "faster"
[]
`(do
(rlm.rlm-commands/ns-nuke)
(clojure.core/use :reload
(clojure.core/symbol (clojure.core/str clojure.core/*ns*)))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment