Skip to content

Instantly share code, notes, and snippets.

@camsaul
Last active March 31, 2021 23:43
Show Gist options
  • Save camsaul/4f7357b4fb7c928f17f44627353af026 to your computer and use it in GitHub Desktop.
Save camsaul/4f7357b4fb7c928f17f44627353af026 to your computer and use it in GitHub Desktop.
Log Clojure requires
(def ^:private ^:dynamic *require-chain* nil)
(defonce new-require
(let [orig-require (var-get #'clojure.core/require)]
(orig-require 'clojure.pprint)
(fn [& args]
(binding [*require-chain* (conj (vec *require-chain*) (ns-name *ns*))]
(let [require-chain-description (apply str (interpose " -> " *require-chain*))]
(println "\nin" require-chain-description)
((resolve 'clojure.pprint/pprint) (cons 'require args))
(apply orig-require args)
(println "finished" require-chain-description))))))
(alter-var-root #'clojure.core/require (constantly new-require))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment