HyREPL is an implementation of the nREPL protocol for Hy.
HyREPL requires Python3 and Hy from Git. It is still a work in progress, but it is suitable for daily usage :)
To install, run
python setup.py install
or get it from pypi
pip install hyrepl
To run the tests, simply execute nosetests-3.4 -v
. The tests create (and bind
to) a UNIX domain socket at /tmp/HyREPL-test
.
This list is not exhaustive, and HyREPL does not support all features offered by these clients, such as advanced debugger integration, profiling or tracing. Jump to source is also not supported.
- Support live eval by connecting with
Clojure nrepl
. Still basic and buggy
fireplace
with vim-hy to provide the necessary glue
cider
monroe
python-nrepl-client
For the best integration, install vim-hy. It offers syntax highlighting and indentation support as well as wrappers around fireplace to make it more Hy-friendly.
Run hy -m HyREPL.server
in your target directory and open a Hy file in vim.
You can also use :setf hy
to set the file type explicitly. Connect vim to the
REPL with :Connect
. Use nrepl
as the protocol, localhost
as the host and
the port number HyREPL printed on start.
Open a Hy file and set the file type to clojure
: set filetype=clojure
. This
will suck because it doesn't support :Doc
. Other things might be broken as
well.
:Require[!]
does not yet work. Use:%Eval
to evaluate complete files.- fireplace uses a lot of clojure-specific pieces of code. Most of these could be transformed with workarounds.
You can use HyREPL to add a remote control to your own programs. The following steps are a small example:
(import time
[HyREPL.server :as repl]
[HyREPL.middleware.eval :as repl-mw])
(setv (. repl-mw eval-module) (globals))
(defmain [&rest args]
(let [[s (repl.start-server)]]
(print (.format "Listening on {}" (. (second s) server-address)))
(while True
(time.sleep 1))))
If you encounter bugs or missing features, please create an issue
report. Patches are always welcome.
If you have questions, we hang out in #hy
on Freenode.