replant.vim: Regrowing again
replant (v.) 1570s, from re- "back, again" + plant (v.).
Plant (a tree or plant that has been dug up) again, especially when transferring it to a larger pot or new site.
This plugin is an attempt to extend the current Clojure/vim ecosystem. It works with fireplace to add and augment features. In the future it may replace fireplace, or also use other backends.
clojure-emacs have done amazing work to ensure CIDER is usable by other editors. I wish to have more features in vim, and I’m willing to accept coupling to more nrepl middleware for it. I’m a Neovim user, so would like to take advantage of new APIs to make developing vim plugins easier or with more features.
Replant is in pre-pre-alpha stages. I am using it, working full-time on Clojure. But there may be bugs from time to time, which I will personally solve with a potentially uncommittable solution. That will leave you with you with a broken plant.
All input is welcome! Feel free to open issues for questions & feature requests. I am available on Clojurians Slack in either #vim or as dominicm.
❏ Enhanced Docs
❏ Colourful echo’d output on
❏ Open document with shortcuts to close, works with
✓ Refresh based on cider’s built-in refresh
❏ Find symbol
✓ Basic quickfix command
❏ fzf integration
❏ Denite integration
❏ Async quickfix
✓ Hotload dependencies
✓ Auto-insertion of (ns) for new files.
✓ List resources (classpath files which aren’t source code), and jump to their real location
✓ Test runner
✓ Realtime apropos
✓ for fzf
❏ for Denite
<localleader>rf will perform a tools.namespace refresh, and
<localleader>ra will perform a tools.namespace refresh-all.
It searches for your stop/start functions in various namespaces automatically.
If your stop/start functions are unique, you may set
g:replant_refresh_after_hook to a symbol referring to your start/stop functions.
Let me know if you have a common stop/start function or namespace which my detection missed.
:ReplantFindSymbol will find references to the symbol under the cursor.
They quickfix window will open automatically after this, if there are any matches found.
:ReplantHotloadDependency aero 1.1.2 will hotload a named dependency into the current JVM.
<range>:ReplantHotloadDependency will hotload a dependency in leiningen coordinate style into the current JVM. Intended for use with vim-sexp like
vaf:ReplantHotloadDependency when on the coordinate.
You can list resources with
This will open a quickfix buffer with the real location set, and the relative classpath location as the description.
Resources, as defined by cider-nrepl, are all files on the classpath excluding source files & META-INF.
You can run project tests with
:ReplantTestProject, which takes these arguments:
Include tests with the metadata "selector" on them.
Exclude tests with the metadata "selector" on them.
Automatically load project namespaces if they are unloaded (default)
Do not automatically load project namespaces
You can conveniently run tests with
It is also possible to rerun only previously failed tests using
ReplantRetestProject, which takes no arguments:
Sometimes tests throw an exception, you can use the full power of the tagged stacktrace explorer with tests.
A command will be conveniently provided to you in the form
:ReplantTestStacktrace ns var nr.
You must switch to a clojure buffer to run this.
It will fetch the stacktrace information, and load it into the quickfix window.
Realtime Apropos (Var Search)
:ReplantApropos can be used to load up fzf with all vars.
The standard, Ctrl+X, Ctrl+V, and Ctrl+T work in the fzf buffer.
In addition, Ctrl+I will bring up a buffer containing doc information about the symbol.
|Special symbols, recognizable by their lack of namespace, do not have a source to jump to.|
|The doc information is not well tested, and is highly subject to change.|
I use urn to generate lua files from lisp. This is fun. Don’t doubt me.
$ make URNPATH=/home/dominic/src/gitlab.com/urn/urn