Fancy Clojure REPL [asciinema]
source link: https://asciinema.org/a/296507
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
A fancy Clojure REPL, to get it yourself, do the following:
In your .clojure/deps.edn
add the following alias:
:aliases {:repl {:extra-deps {com.bhauman/rebel-readline {:mvn/version "RELEASE"} com.gfredericks/user.clj {:mvn/version "RELEASE"} org.clojure/core.async {:mvn/version "RELEASE"} org.clojure/core.logic {:mvn/version "RELEASE"} org.clojure/test.check {:mvn/version "RELEASE"} com.clojure-goes-fast/clj-java-decompiler {:mvn/version "RELEASE"} com.clojure-goes-fast/clj-memory-meter {:mvn/version "RELEASE"} com.clojure-goes-fast/clj-async-profiler {:mvn/version "RELEASE"} com.clojure-goes-fast/jvm-alloc-rate-meter {:mvn/version "RELEASE"} com.clojure-goes-fast/jvm-hiccup-meter {:mvn/version "RELEASE"} io.aviso/pretty {:mvn/version "RELEASE"} mvxcvi/puget {:mvn/version "RELEASE"} com.hypirion/clj-xchart {:mvn/version "RELEASE"} org.clojure/clojure {:mvn/version "RELEASE"} generateme/fastmath {:mvn/version "RELEASE"} clj-commons/pomegranate {:mvn/version "RELEASE"}} :main-opts ["-m" "rebel-readline.main"]}
And in .clojure/user.clj
add the following: https://gist.github.com/didibus/b88a0d458601e06d63d0ca430962ff42
Finally, in your .zshrc
or .bashrc
file add:
function clj() { if [[ -z $@ ]] then command clojure -A:repl else command clj $@ fi }
So now when you type clj
you get a super fancy repl with colorized output, friendly error messages, auto-complete, doc showing, multi-line support and the most common namespaces pre-required as well as useful functions you can use with (req-...)
to lazy require more useful namespaces. There is one called (req-deps)
which requires pomegranate and defines add-lein-deps
that can then be used to dynamically bring in more dependencies to the REPL as well.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK