A single-shot nREPL client designed for shell invocation.
This connects to a running nREPL server (like kind started with lein repl
,
for example), sends some code to be evaluated, and prints the results and
output.
$ rep '(clojure.tools.namespace.repl/refresh)' :reloading () :ok
Unlike other nREPL clients, rep
does not try to maintain a persistent
connection, meaning that thread-local variables and bindings like *e
and
*1
will not persist across invocations of rep
. Perhaps there are
other limitations because of this?
See the rep manpage.
Nix is the build tool. Weird, yes, but this project has a brittle set of peculiar dependencies and Nix allows us to pin down everything.
$ nix-build .
A result
symlink will appear in the current directory point to the build
output.
If you want to add a feature, please add tests. The nicest way to start a REPL running tests is:
$ clj -A:test Clojure 1.10.0-master-SNAPSHOT user=> (use 'midje.repl) Run `(doc midje)` for Midje usage. Run `(doc midje-repl)` for descriptions of Midje repl functions. nil user=> (autotest) ====================================================================== Loading (rep.test-drivers rep.format-test rep.core-test) nil All checks (36) succeeded. [Completed at 22:56:48] true user=>
To run all the tests that CI runs, the way CI runs them (do this before issuing a pull request):
$ nix-build release.nix
The rc/
folder contains scripts which add a ,e
user mode to Kakoune. To
link this to Kakoiune’s autoload directory, do the following:
$ make install
rep
must be in the path for the plugin to work.
At the moment, Graal doesn’t deal well with the way Clojure generates bytecode from its locking macro, so to build bytecode that Graal can handle, we need to apply this patch. This issue is being tracked here and here.