Conjure is an interactive environment for evaluating code within your running program.
The core features of Conjure are language agnostic (although it’s targeted at Lisps for now), with each language client providing their own extra tools. Here’s the currently supported languages, contributions and 3rd party plugins that add clients are highly encouraged!
-
Clojure over nREPL (quickstart)
-
Fennel inside Neovim via Lua and Aniseed (quickstart)
-
Fennel outside of Neovim within any Lua process through an stdio REPL (quickstart)
-
Janet over spork/netrepl (quickstart)
-
Racket over stdio (quickstart)
-
Hy over stdio (quickstart)
-
Scheme (MIT by default) over stdio (quickstart)
-
Guile over a socket file (quickstart)
What does wielding Conjure actually look like? What can you do with it?
-
YouTube: How I use Conjure and Neovim to interact with Clojure (and more!)
-
Asciinema (see below)
-
Open a file of a supported file type such as
clojure
orracket
. -
Some languages, such as Clojure, will automatically connect to your REPL or give you the commands and mappings to do so yourself.
-
Use various mappings to execute the code you’re interested in such as the current form, file, buffer or even form at a Neovim mark.
-
Every result is kept in a log buffer that you can access at any time.
-
Support for multiple asynchronous autocompletion frameworks, with deoplete built in (
<C-x><C-o>
also works!).
Conjure allows you to send the right part of your code off for evaluation, see the results, wrap the results in more code and evaluate that. It keeps a log of your actions and results so you don’t have to remember them, that context is extremely helpful when you’re down the rabbit hole of a bug hunt.
The goal is to give you a tool that lets you effortlessly run whatever you need to while keeping out of your way (but there with context and more information if you need it).
You can trial run Conjure with the interactive :ConjureSchool
tutorial without actually installing it! The only prerequisites are curl
and an up to date nvim
.
curl -fL conjure.fun/school | sh
This will temporarily download the plugin, launch Neovim with :ConjureSchool
running and then clean up after itself. You get to try out what Conjure has to offer without having to edit your Neovim configuration.
Use your favourite plugin manager, mine is vim-plug but any will do. Be sure to pin it to a tag and subscribe to releases through GitHub to avoid any surprises in the future.
Plug 'Olical/conjure', {'tag': 'v4.19.0'}
You’ll need to be on the latest stable Neovim for all of the features (such as floating windows) to work. If you see errors, please check your Neovim version before raising an issue.
Note: Some issues have been reported when using packer to install Conjure and Aniseed. Work has been done to mitigate this, but this comment should help you out if you run into issues.
All further documentation is found within :help conjure
. You can also use :ConjureSchool
to get an interactive introduction to the workflow and mappings Conjure provides.
Broader documentation can be found in the Conjure wiki, there you’ll find blog posts and guides that will help you get common workflows up and running. Contributions are encouraged!
These are clients I intend to build eventually or encourage another community member to build and maintain on my behalf. Every language we add creates another bridge between communities, I would like Conjure to be common ground between all of our beloved esoteric REPL based languages.
Conjure is written entirely in Lua (no VimL or external processes!) which is compiled from Fennel by Aniseed ahead of time. Check out CONTRIBUTING.adoc
for more on how to work on Conjure using itself.
Historically, Conjure was Clojure specific with an entirely different implementation, you can still find that version on the legacy-jvm branch.
Find the full unlicense in the UNLICENSE
file, but here’s a snippet.
This is free and unencumbered software released into the public domain.
Anyone is free to copy, modify, publish, use, compile, sell, or distribute this software, either in source code form or as a compiled binary, for any purpose, commercial or non-commercial, and by any means.