Sometime ago, I did a post on how I work with Atom to develop Clojure and ClojureScript projects. It is in Portuguese, so I’m gonna re-visit the subject and also update with my current workflow.
There are two packages that I have to install to work with Clojure: lisp-paredit
and chlorine
. Without lisp-paredit
, when I start a newline, the indentation gets all sorts of problematic. I use it on “strict mode” and use the tools to slurp/barf forward only. As for chlorine
, it is needed to have autocomplete, evaluation, show documentation, goto var definition and so on. Last, I use also parinfer
so I can remove whole lines of text and parinfer will infer the correct closing of parenthesis for me (most of the time at least).
Now, how exactly do I work with Clojure? When you use lein
or boot
, you’ll get a nREPL port. This is not the port you use with Chlorine, so I need a bit more of work. I can’t just start a REPL with lein repl
or clj
, I need to inform the tool to open a socket-repl server. The JVM option needed is: '-Dclojure.server.myrepl={:port,5555,:accept,clojure.core.server/repl}'
. So, the commands below are what I use with lein
or clj
:
JAVA_OPTS='-Dclojure.server.myrepl={:port,5555,:accept,clojure.core.server/repl}' lein repl
or
clj -J'-Dclojure.server.myrepl={:port,5555,:accept,clojure.core.server/repl}'
This will open a REPL at port 5555
(or I can change the port if necessary). Then, it’s time to fire up the Atom’s command palette and select “Connect Clojure Socket REPL”, put 5555 on the port, and connect. Then, I’ll use “Refresh Namespaces” or “Load file” command to load my latest version of code into the REPL, and start working.
(more…)