Meta Redux: Making CIDER More Discoverable

Wait 5 sec.

This series about the notable changes inCIDER 2.0 continues with the changeyou’ll bump into first, whatever your workflow: the transient menus, and thebroader push to make CIDER’s functionality discoverable.The problem: CIDER is hugeCIDER has well over 300 interactive commands. I’ll admit something I’ve saidbefore: there are features in CIDER that even I forget exist, and I wrotehalf of them. For users, historically, the options for finding functionalitywere: memorize cryptic key chords (C-c C-w i, anyone?) grep the (very long) manual read the source stumble on a feature by accident three years in and feel robbedThat’s not great for a tool whose whole pitch is making you more productive.The Emacs answer to this problem was demonstrated years ago byMagit: transientmenus, which turn every prefix into a self-documenting popup. It took usembarrassingly long to follow suit, but CIDER 2.0 finally does.Transient everywhereEvery command group in CIDER now opens a transient menu: cider-eval-menu atC-c C-v, cider-doc-menu at C-c C-d, and likewise for test, namespace,macroexpand, profile, trace and references. A top-level cider-menu ties themall together, and even the debugger (? mid-session) and the inspector (m)got menus of their own. Jack-in and connect live in cider-start-menu atC-c C-x.One design constraint was non-negotiable: your muscle memory is safe. These menusreplace bare prefix keymaps, so every existing keybinding works exactly asbefore, at full speed - C-c C-v e still evaluates instantly, menu or nomenu. And if you’d rather not see the menus at all unless you actuallyhesitate mid-chord, set transient-show-popup to a short delay and they’llappear only in that moment of doubt - which is precisely when you need them.Transient also gave us something the old keymaps never could: arguments.Menus now carry flags for the things that vary per invocation - pick apretty-printer with --print-fn=, set test selectors with--include=/--exclude= and reuse them across runs, togglecider-ns-refresh’s modes explicitly, pass Clojure CLI aliases at jack-intime. All those “this command behaves differently with a prefix argument”paragraphs in the manual are becoming visible checkboxes instead.Discovery beyond menusThe menus are the headline, but the discoverability push in the 2.0 cycle wentwider: A new keybindings reference pagecollects every binding in one place, and the printablerefcard wasbrought back up to date. The REPL’s shouty welcome banner is gone, replaced by a one-line hint; thegetting-started material now lives in a summonable reference card(C-c C-h, or the ,refcard REPL shortcut) - available when you want it,invisible when you don’t. CIDER now warns (once per session) when you use a deprecated keybinding, sobindings can actually be retired someday without silently breaking people.M-x cider-list-deprecated-keybindings shows what’s on the way out. The 1.22 cycle’s big audit already made the mode menus expose dozens ofcommands that were technically present but practically invisible; 2.0 buildson that foundation. Even cider-doctor is discoverability of a sort - it surfaces the problemsin your setup that you’d otherwise discover one confusing bug report at atime.The philosophyIf I had to compress the 2.0 discoverability work into one sentence: thefeatures were always there; now the tool tells you about them. Documentationis where knowledge goes to be forgotten - the only reliable place to teach auser about a feature is inside the workflow itself, at the moment ofhesitation. Transient menus are exactly that, and Magit proved the patternscales to enormous command sets.If some menu feels wrong - a missing command, a flag that should exist, agrouping that doesn’t match how you think - please file an issue. This part ofCIDER is young and very much open to feedback.The keybindings docs have thefull picture. Keep hacking!