In the Clojure community we love to say "it's just data", and this enables us to compose things in unique and often-unexpected ways.
One place where that maxim hasn't been thoroughly applied is developer tooling. Representing things like tracers, test runners, and refactoring tools with a unified declarative model allows us to construct powerful meta-tools for various development environments and avoid reinventing the wheel for building interfaces for each editor one at a time.
Let's do some cross-runtime metaprogramming for greater Clojure/editor symbiosis!
There are lots of one-off libraries for (say) Emacs which exist only to expose some small piece of Clojure-side functionality, like clojure-test-mode.el or slamhound.el. Developers using Vim or other editors must either port that code to vimscript for each operation they want to invoke or just invoke the Clojure functions directly thru the repl.
Certain operations benefit greatly from becoming first-class editor commands, like "run the tests for this file" or "turn on tracing for this var" since they can be bound directly to key combinations. The ability of the editor to offer completion on options that make sense for that particular operation is very helpful.
My talk will show a method for attaching metadata to vars to indicate that the function should become a first-class editor-side command. I'll also demo a client implementation for Emacs (and hopefully at least one other editor) which turns this metadata directly into interactive defuns which can be called via M-x or key bindings.
I submitted a similar idea to ClojureWest in 2014 but did not end up giving the talk.