branch: elpa/cider
commit 035a0ad392bab4e3189dd38ed414f948707783a1
Author: Bozhidar Batsov <[email protected]>
Commit: Bozhidar Batsov <[email protected]>

    Tighten and group the unreleased changelog entries
    
    Trim most entries down to a sentence, gather the big themes (transient
    menus, rich content, code exploration, tracing/enlighten, macrostep,
    renames) under parent bullets, fold same-cycle follow-up entries into
    the feature they refined, and consolidate the incremental cider-nrepl
    bump entries into a single 0.59.0 -> 0.62.1 one.
---
 CHANGELOG.md | 190 +++++++++++++++++++++++++----------------------------------
 1 file changed, 80 insertions(+), 110 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9196e4afc1..a4dcc08927 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,136 +8,106 @@
 
 ### New features
 
+- Transient menus everywhere:
+  - [#4048](https://github.com/clojure-emacs/cider/pull/4048): Each command 
group now opens a transient menu instead of a bare prefix keymap 
(`cider-eval-menu` at `C-c C-v`, `cider-doc-menu` at `C-c C-d`, and likewise 
for test, ns, insert, macroexpand, profile, trace and references), plus a 
top-level `cider-menu` dispatch; existing keybindings are preserved.
+  - [#4061](https://github.com/clojure-emacs/cider/pull/4061): The 
jack-in/connect keybindings are a transient menu too (`cider-start-menu`, `C-c 
C-x`), with flags for aliases (`-a`), the ClojureScript REPL type (`-l`) and 
editing the command before running (`-e`) 
([#3317](https://github.com/clojure-emacs/cider/issues/3317)).
+  - Add a transient menu to the debugger (`cider-debug-menu`, `?` during a 
debug session) - its single-key commands are proper named commands now (e.g. 
`cider-debug-next`), so `M-x` works too - and to the inspector 
(`cider-inspector-menu`, `m`).
+  - Add per-invocation flags to several menus: the printer (`--print-fn=`) in 
the pretty-print menu 
([#4065](https://github.com/clojure-emacs/cider/pull/4065)), test selectors 
(`--include=`/`--exclude=`) in the test menu 
([#4063](https://github.com/clojure-emacs/cider/pull/4063)), refresh modes 
(`--all`/`--clear`/`--inhibit-fns`) in the ns menu and expansion display 
(`--ns=`/`--meta`) in the macroexpand menu 
([#4062](https://github.com/clojure-emacs/cider/pull/4062)).
+- Rich content in evaluation results:
+  - [#2476](https://github.com/clojure-emacs/cider/issues/2476): Interactive 
evaluations now honor content types too: a result carrying rich content (e.g. 
an image) renders per the new `cider-eval-rich-content-destination` - `inline` 
(the default, in the result overlay at point), `repl`, `popup` or `nil` (plain 
values, the previous behavior).
+  - Render fetched `text/html` content as formatted text (via `shr`), and make 
an external-content result's URL a clickable link; remote images inside that 
HTML are never fetched, so rendering a result never makes a network request on 
its own.
+- New code-exploration commands under `C-c C-w`, presented as expandable trees:
+  - [#3995](https://github.com/clojure-emacs/cider/pull/3995): 
`cider-who-calls` (`c`) and `cider-who-is-called` (`d`), SLIME-style browsers 
for a function's callers and callees.
+  - [#3997](https://github.com/clojure-emacs/cider/pull/3997), 
[#3998](https://github.com/clojure-emacs/cider/pull/3998), 
[#4000](https://github.com/clojure-emacs/cider/pull/4000), 
[#4001](https://github.com/clojure-emacs/cider/pull/4001): 
`cider-who-implements` (`i`), browsing a protocol's implementing types (inline 
`defrecord`/`deftype` included) or a multimethod's dispatch values, with jumps 
to each implementation's source.
+  - [#3999](https://github.com/clojure-emacs/cider/pull/3999): 
`cider-type-protocols` (`t`), listing the protocols a type implements, and 
`cider-protocols-with-method` (`p`), listing the protocols that declare a given 
method.
+  - [#3996](https://github.com/clojure-emacs/cider/pull/3996): 
`cider-who-macroexpands` (`m`), finding a macro's use sites by searching the 
project's source.
+- [#3994](https://github.com/clojure-emacs/cider/pull/3994): 
`xref-find-references` (`M-?`) now finds references by searching the project's 
source files, covering code that hasn't been loaded into the REPL yet 
(configurable via `cider-xref-references-mode`).
+- Tracing and enlighten:
+  - [#3990](https://github.com/clojure-emacs/cider/pull/3990), 
[#3992](https://github.com/clojure-emacs/cider/pull/3992), 
[#3993](https://github.com/clojure-emacs/cider/pull/3993): Add `cider-trace`, a 
dedicated buffer that streams the calls and return values of traced functions 
live (instead of interleaving them into the REPL), with foldable calls, `n`/`p` 
navigation and jump-to-definition.
+  - [#3989](https://github.com/clojure-emacs/cider/pull/3989): Add 
`cider-list-traced` to show what's currently traced and `cider-untrace-all` to 
clear all tracing at once.
+  - [#3988](https://github.com/clojure-emacs/cider/pull/3988), 
[#3991](https://github.com/clojure-emacs/cider/pull/3991): Add 
`cider-enlighten-defun-at-point` (enlighten a single form without the global 
mode), `cider-enlighten-clear` and `cider-enlighten-stop` (turn enlightenment 
off at once).
+- Inline macro stepping 
([#3970](https://github.com/clojure-emacs/cider/pull/3970), 
[#3976](https://github.com/clojure-emacs/cider/pull/3976), 
[#3977](https://github.com/clojure-emacs/cider/pull/3977), 
[#3978](https://github.com/clojure-emacs/cider/pull/3978), 
[#3985](https://github.com/clojure-emacs/cider/pull/3985)): add 
`cider-macrostep-expand` (`cider-macrostep-mode`), expanding macros in place 
step by step, with the further-expandable sub-forms highlighted, gensyms 
colorized, full e [...]
+- Eval-to-comment improvements:
+  - [#3965](https://github.com/clojure-emacs/cider/pull/3965): Add 
`cider-send-to-comment` (`C-c C-j c`), copying the form at point into the 
namespace's rich `comment` block, and `cider-jump-to-comment` (`C-c C-j v`) to 
visit it.
+  - [#3964](https://github.com/clojure-emacs/cider/pull/3964): Add 
`cider-comment-style` (`line`, `discard` or `comment`) to control how the 
inserted results are formatted.
+  - [#4018](https://github.com/clojure-emacs/cider/pull/4018): Successive 
eval-to-comment calls now update the inserted result in place instead of 
stacking stale ones.
+- [#4044](https://github.com/clojure-emacs/cider/pull/4044), 
[#4045](https://github.com/clojure-emacs/cider/pull/4045): Add `cider-tap`, a 
buffer that streams the values sent to `tap>` and lets you inspect them with 
`RET` (ClojureScript taps stream too, but aren't inspectable).
+- [#4094](https://github.com/clojure-emacs/cider/pull/4094): Add 
`cider-doctor`, which checks your Emacs setup (and the active nREPL session, if 
any) for common problems and shows a copy-pasteable report.
 - Add an `orchard` value for `cider-print-fn`, selecting cider-nrepl's 
`orchard.pp`-backed pretty-printer - significantly faster than the default 
`clojure.pprint` and it doesn't realize lazy seqs while printing.
-- [#4108](https://github.com/clojure-emacs/cider/pull/4108): Add `C-c C-d` at 
the stdin prompt (shown when evaluated code reads input) to send end-of-input, 
so `read-line` returns `nil` and `(slurp *in*)` completes - code reading to EOF 
can now be satisfied interactively instead of only by interrupting the 
evaluation.
-- [#4094](https://github.com/clojure-emacs/cider/pull/4094): Add 
`cider-doctor`, which checks your Emacs setup (and the active nREPL session, if 
any) for common problems and shows a copy-pasteable report - 
Emacs/CIDER/dependency versions, build tools on the path, stale byte-code, 
leftover obsolete config, and cider-nrepl/nREPL/Clojure compatibility.
-- Render fetched `text/html` content as formatted text (via `shr`) in the REPL 
and the rich-content popup, and make the URL of an external-content result a 
clickable link that opens in the browser (next to its `[show content]` button). 
Remote images in that HTML are not fetched, so rendering a result never makes a 
network request on its own (only inline `data:` images render).
-- Honor content types for interactive evaluations too 
([#2476](https://github.com/clojure-emacs/cider/issues/2476)): a 
`cider-eval-last-sexp` returning an image can now render it, per the new 
`cider-eval-rich-content-destination` - `inline` (the default, in the result 
overlay at point), `repl` (like results of forms typed at the prompt, with the 
`[show content]` button for external references), `popup` (the `*cider-result*` 
buffer) or `nil` (plain values, the previous behavior).
-- Add a transient menu to the debugger (`cider-debug-menu`, bound to `?` 
during a debug session), grouping all the debugger's single-key commands; they 
are also proper named commands now (e.g. `cider-debug-next`, 
`cider-debug-quit`), so they can be invoked via `M-x` as well.
-- Add a transient menu to the inspector (`cider-inspector-menu`, bound to `m` 
in the inspector buffer), grouping all the inspector commands.
-- [#4065](https://github.com/clojure-emacs/cider/pull/4065): Add a 
`--print-fn=` flag to the pretty-print transient menu 
(`cider-eval-pprint-menu`) to pick the printer (pr/pprint/fipp/puget/zprint or 
a custom var) per invocation.
-- [#4063](https://github.com/clojure-emacs/cider/pull/4063): Add test-selector 
flags to the test transient menu (`cider-test-menu`): `--include=` and 
`--exclude=`, so a selector filter can be set once and reused across the 
namespace/loaded/project run commands.
-- [#4062](https://github.com/clojure-emacs/cider/pull/4062): Add refresh-mode 
flags to the namespace transient menu (`cider-ns-menu`): `--all`, `--clear` and 
`--inhibit-fns`, making `cider-ns-refresh`'s otherwise prefix-argument-only 
modes explicit and combinable.
-- [#4062](https://github.com/clojure-emacs/cider/pull/4062): Add display flags 
to the macroexpand transient menu (`cider-macroexpand-menu`): `--ns=` 
(tidy/qualified/none) and `--meta`, to control the popup expansion's rendering 
per invocation.
-- [#4061](https://github.com/clojure-emacs/cider/pull/4061): The 
jack-in/connect keybindings are now a transient menu (`cider-start-menu`, `C-c 
C-x`), with argument flags for the settings that vary per session: aliases 
(`-a`), the ClojureScript REPL type (`-l`) and editing the command before 
running (`-e`) ([#3317](https://github.com/clojure-emacs/cider/issues/3317)).
+- [#4108](https://github.com/clojure-emacs/cider/pull/4108): `C-c C-d` at the 
stdin prompt sends end-of-input, so code reading to EOF can be satisfied 
interactively instead of only by interrupting the evaluation.
+- [#4026](https://github.com/clojure-emacs/cider/pull/4026): Run ClojureScript 
tests (asynchronous ones included) with the regular test commands when a 
ClojureScript REPL is active, instead of refusing them.
+- [#4025](https://github.com/clojure-emacs/cider/pull/4025): Mark each 
`deftest` with a green (passed) or red (failed) fringe indicator after a test 
run; `cider-fringe-indicators` now also accepts a list of kinds (`eval`, 
`test`) ([#3721](https://github.com/clojure-emacs/cider/issues/3721)).
+- [#3973](https://github.com/clojure-emacs/cider/pull/3973), 
[#3980](https://github.com/clojure-emacs/cider/pull/3980): Indicate namespace 
load-state: a mode-line (and optional fringe) marker when the buffer's 
namespace isn't loaded into the REPL or is stale 
(`cider-ns-load-state-display`), and per-form fringe markers that turn amber 
when an evaluated form is edited (`cider-mark-stale-after-edit`); the load, 
reload and refresh commands all keep them in sync.
+- [#4023](https://github.com/clojure-emacs/cider/pull/4023): 
`cider-auto-inspect-after-eval` now accepts `interactive`, `repl` or `all`, so 
a visible inspector can also be refreshed after REPL evaluations 
([#3636](https://github.com/clojure-emacs/cider/issues/3636)).
+- [#4057](https://github.com/clojure-emacs/cider/pull/4057): Show an animated 
spinner overlay at the form being evaluated instead of the mode-line spinner, 
when result overlays are enabled 
([#3516](https://github.com/clojure-emacs/cider/issues/3516)).
 - [#4060](https://github.com/clojure-emacs/cider/pull/4060): Hint at jack-in 
time when no Clojure CLI aliases are set, so newcomers discover aliases like 
`:dev`/`:test`; set `cider-clojure-cli-aliases` to `:nil-no-warn` to silence it 
([#3317](https://github.com/clojure-emacs/cider/issues/3317)).
-- [#4057](https://github.com/clojure-emacs/cider/pull/4057): Show an animated 
spinner overlay at the form being evaluated (where its result will appear) 
while an interactive evaluation is pending, instead of the mode-line spinner, 
when result overlays are enabled 
([#3516](https://github.com/clojure-emacs/cider/issues/3516)).
-- [#4055](https://github.com/clojure-emacs/cider/pull/4055): Add 
`cider-clojure-cli-powershell-options` to pass extra options (e.g. `-noprofile 
-executionpolicy bypass`) to the PowerShell executable used for jack-in on 
Windows ([#2879](https://github.com/clojure-emacs/cider/issues/2879)).
-- [#4048](https://github.com/clojure-emacs/cider/pull/4048): Open a transient 
menu for each command group instead of a bare prefix keymap (`cider-eval-menu` 
at `C-c C-v`, `cider-doc-menu` at `C-c C-d`, and likewise for test, ns, insert, 
macroexpand, profile, trace and references), plus a top-level `cider-menu` 
dispatch. Existing keybindings are preserved; the menus just make the commands 
discoverable.
-- [#4044](https://github.com/clojure-emacs/cider/pull/4044): Add `cider-tap`, 
a buffer that streams the values sent to `tap>` and lets you inspect Clojure 
values with `RET` (reusing the inspector). ClojureScript taps stream too 
([#4045](https://github.com/clojure-emacs/cider/pull/4045)) but aren't 
inspectable (their value lives in the JS runtime). Requires a recent enough 
`cider-nrepl` (with the `tap` middleware).
-- [#4026](https://github.com/clojure-emacs/cider/pull/4026): Run ClojureScript 
tests with the regular test commands (e.g. `cider-test-run-ns-tests`) when a 
ClojureScript REPL is active, instead of refusing them; requires a recent 
enough `cider-nrepl` (asynchronous `cljs.test/async` tests included).
-- [#4023](https://github.com/clojure-emacs/cider/pull/4023): 
`cider-auto-inspect-after-eval` now accepts `interactive`, `repl` or `all` (in 
addition to `t`/`nil`), so a visible inspector can also be refreshed after REPL 
evaluations ([#3636](https://github.com/clojure-emacs/cider/issues/3636)).
-- [#4025](https://github.com/clojure-emacs/cider/pull/4025): Mark each 
`deftest` with a green (passed) or red (failed) left-fringe indicator after a 
test run. `cider-fringe-indicators` now accepts a list of kinds (`eval`, 
`test`) for finer control, in addition to `t`/`nil` 
([#3721](https://github.com/clojure-emacs/cider/issues/3721)).
-- [#4004](https://github.com/clojure-emacs/cider/pull/4004): Add 
`cider-browse-spec-tree`, which browses a spec and the specs it references as 
an expandable tree - expand a node to reveal its sub-specs (a level at a time), 
`RET` to open a spec's full definition.
-- [#3999](https://github.com/clojure-emacs/cider/pull/3999): Add 
`cider-type-protocols` (`C-c C-w t`), listing the protocols a type implements 
(the reverse of `cider-who-implements`), and `cider-protocols-with-method` 
(`C-c C-w p`), listing the protocols that declare a given method.
-- [#3997](https://github.com/clojure-emacs/cider/pull/3997): Add 
`cider-who-implements` (`C-c C-w i`), which browses a protocol's implementing 
types or a multimethod's dispatch values on an expandable tree. (Currently a 
client-side approximation; inline `defrecord`/`deftype` impls and 
per-`defmethod` jumps await a follow-up middleware op.)
-- [#3996](https://github.com/clojure-emacs/cider/pull/3996): Add 
`cider-who-macroexpands` (`C-c C-w m`), which finds a macro's use sites by 
searching the project's source - the runtime ops can't see them, since macros 
are expanded away at compile time.
-- [#3995](https://github.com/clojure-emacs/cider/pull/3995): Add 
`cider-who-calls` (`C-c C-w c`) and `cider-who-is-called` (`C-c C-w d`), 
SLIME-style call-graph browsers that present a function's callers/callees as an 
interactive tree you can expand a level at a time.
-- [#3994](https://github.com/clojure-emacs/cider/pull/3994): Find references 
by searching the project's source files, covering code that hasn't been loaded 
into the REPL yet: `xref-find-references` (`M-?`) now uses this source search 
by default (configurable via `cider-xref-references-mode`, which can also fold 
in the runtime references), and `cider-xref-fn-refs-in-source` (`C-c C-? s`) 
runs it explicitly.
-- [#3991](https://github.com/clojure-emacs/cider/pull/3991): Add 
`cider-enlighten-stop` to turn off enlightenment at once - it disables 
`cider-enlighten-mode`, clears the overlays, and ignores any further values 
still streaming from previously-instrumented code, so you no longer have to 
re-evaluate everything just to make it stop.
-- [#3990](https://github.com/clojure-emacs/cider/pull/3990): Add 
`cider-trace`, opening a dedicated `*cider-trace*` buffer that streams the 
calls and return values of traced functions live, instead of interleaving them 
into the REPL (requires a recent enough `cider-nrepl`).
-- [#3989](https://github.com/clojure-emacs/cider/pull/3989): Add 
`cider-list-traced` to show the vars and namespaces that are currently traced, 
and `cider-untrace-all` to clear all tracing at once (both require a recent 
enough `cider-nrepl`).
-- [#3988](https://github.com/clojure-emacs/cider/pull/3988): Add 
`cider-enlighten-defun-at-point` to enlighten a single top-level form without 
toggling the global `cider-enlighten-mode`, and `cider-enlighten-clear` to 
remove the enlighten overlays from a buffer.
-- [#3964](https://github.com/clojure-emacs/cider/pull/3964): Add 
`cider-comment-style` to control how the eval-to-comment commands format the 
inserted result (`line`, `discard` or `comment`).
-- [#3965](https://github.com/clojure-emacs/cider/pull/3965): Add 
`cider-send-to-comment` to copy the top-level form at point into the 
namespace's rich `comment` block (`C-c C-j c`), optionally evaluating it, and 
`cider-jump-to-comment` to visit the block (`C-c C-j v`).
-- [#3963](https://github.com/clojure-emacs/cider/pull/3963): Attach 
`cider-scratch` buffers to a specific session (one scratchpad per session), 
with a configurable eval destination (cljc-style by default).
-- [#3966](https://github.com/clojure-emacs/cider/pull/3966): Add 
`cider-set-eval-destination` and `cider-cycle-eval-destination` (`C-c C-M-d`) 
to override, per buffer, which REPL type (clj, cljs or multi) evaluations 
dispatch to.
-- [#3969](https://github.com/clojure-emacs/cider/pull/3969): Show ClojureDocs 
examples inline in the `*cider-doc*` buffer, toggled with `e` 
(`cider-docview-clojuredocs-examples`) or shown automatically when 
`cider-doc-show-clojuredocs-examples` is enabled.
-- [#3970](https://github.com/clojure-emacs/cider/pull/3970): Add 
`cider-macrostep-expand` for inline, in-place macro expansion with 
step-in/collapse (`cider-macrostep-mode`).
-- [#3976](https://github.com/clojure-emacs/cider/pull/3976): Underline the 
further-expandable sub-forms while inline macro stepping and move between them 
with `n`/`p` in `cider-macrostep-mode` (`cider-macrostep-highlight-expandable`).
-- [#3977](https://github.com/clojure-emacs/cider/pull/3977): Colorize the 
gensyms introduced by an inline macro expansion, each distinct gensym in its 
own color, so an introduced binding can be tracked 
(`cider-macrostep-color-gensyms`).
-- [#3978](https://github.com/clojure-emacs/cider/pull/3978): Add 
`cider-macrostep-expand-all` (`a` in `cider-macrostep-mode`) to fully expand 
the form at point inline in one step, instead of stepping level by level.
-- [#3985](https://github.com/clojure-emacs/cider/pull/3985): Add 
`cider-macrostep-expand-in-buffer` to run a macro-stepping session in a 
dedicated `*cider-macrostep*` popup, leaving the source buffer untouched.
-- [#3973](https://github.com/clojure-emacs/cider/pull/3973): Indicate 
namespace load-state: a `cider-mode` lighter (and optional fringe) marker 
showing when the current buffer's namespace isn't loaded into the REPL or is 
stale (`cider-ns-load-state-display`), and a per-form fringe marker that turns 
from green to amber when you edit an evaluated form 
(`cider-mark-stale-after-edit`).
-- [#4018](https://github.com/clojure-emacs/cider/pull/4018): Detect and 
replace eval comments in `cider-pprint-form-to-comment`. Successive calls to 
eval-to-comment commands now update in-place instead of stacking stale results.
+- [#4055](https://github.com/clojure-emacs/cider/pull/4055): Add 
`cider-clojure-cli-powershell-options` to pass extra options to the PowerShell 
executable used for jack-in on Windows 
([#2879](https://github.com/clojure-emacs/cider/issues/2879)).
+- [#4004](https://github.com/clojure-emacs/cider/pull/4004): Add 
`cider-browse-spec-tree`, which browses a spec and the specs it references as 
an expandable tree.
+- [#3969](https://github.com/clojure-emacs/cider/pull/3969): Show ClojureDocs 
examples inline in the `*cider-doc*` buffer (`e` to toggle, 
`cider-doc-show-clojuredocs-examples` to always show them).
+- [#3963](https://github.com/clojure-emacs/cider/pull/3963): Attach 
`cider-scratch` buffers to a specific session (one scratchpad per session), 
with a configurable eval destination.
+- [#3966](https://github.com/clojure-emacs/cider/pull/3966): Add 
`cider-set-eval-destination` and `cider-cycle-eval-destination` (`C-c C-M-d`) 
to override, per buffer, which REPL type evaluations dispatch to.
 
 ### Bugs fixed
 
-- [#4107](https://github.com/clojure-emacs/cider/pull/4107): Route stdin input 
(and a cancel's interrupt) to the exact connection that requested it, so reads 
no longer misroute to the wrong session when several connections are active.
-- [#4106](https://github.com/clojure-emacs/cider/pull/4106): Cancelling a 
stdin prompt (when evaluated code reads input) now interrupts the evaluation. 
Previously it sent a type-incorrect `stdin` value that nREPL treated as EOF, so 
the read ended and evaluation continued instead of being cancelled. The prompt 
also names the REPL when the session has more than one connection.
+- [#4107](https://github.com/clojure-emacs/cider/pull/4107): Route stdin input 
(and a cancel's interrupt) to the exact connection that requested it, so reads 
no longer misroute when several connections are active.
+- [#4106](https://github.com/clojure-emacs/cider/pull/4106): Cancelling a 
stdin prompt now interrupts the evaluation, instead of sending a value nREPL 
treated as EOF and letting the evaluation continue.
 - [#4093](https://github.com/clojure-emacs/cider/pull/4093): Fix a crash 
(`wrong-type-argument stringp nil`) when a REPL result is truncated by the 
print middleware.
 - [#4089](https://github.com/clojure-emacs/cider/issues/4089): Fix 
`cider-macroexpand-undo` failing with a read-only error in the macroexpansion 
buffer.
-- [#4085](https://github.com/clojure-emacs/cider/pull/4085): Resolve 
unqualified ClojureScript core vars (e.g. their indentation metadata) against 
`cljs.core` in a cljs REPL, instead of always falling back to `clojure.core`.
-- [#4085](https://github.com/clojure-emacs/cider/pull/4085): Make a prefix 
argument to `cider-find-keyword` invert `cider-prompt-for-symbol` (matching the 
sibling find commands), instead of forcing the prompt on.
-- [#4084](https://github.com/clojure-emacs/cider/pull/4084): Fix 
`nrepl-dict-merge` mutating a shared literal when its first argument is nil, 
which leaked state (e.g. the REPL ns cache) between unrelated merges.
-- [#4084](https://github.com/clojure-emacs/cider/pull/4084): Don't treat a 
server notification's text as a format string in `nrepl-notify` (a stray `%` 
could error).
-- [#4084](https://github.com/clojure-emacs/cider/pull/4084): Reap the 
sync-request callback on `abort-on-input`/timeout exits, fixing a slow 
per-lookup memory leak on the eldoc/completion path.
-- [#4084](https://github.com/clojure-emacs/cider/pull/4084): Signal a clean 
error from `cider-find-keyword` when there is no keyword at point, instead of a 
raw type error.
-- [#4084](https://github.com/clojure-emacs/cider/pull/4084): Recreate the log 
appender when it is missing server-side (after an appender kill or a REPL 
restart), which a stuck once-per-session flag used to prevent.
-- [#4083](https://github.com/clojure-emacs/cider/pull/4083): Split the 
classpath on the platform path separator, fixing 
`cider-classpath`/`cider-open-classpath-entry` on Windows.
-- [#4083](https://github.com/clojure-emacs/cider/pull/4083): Stop 
`cider-format-region`/`cider-format-defun` from corrupting multi-line string 
and regex literals when the region starts at a non-zero column, and give 
`cider-format-edn-last-sexp` a clean error when there is no sexp at point.
-- [#4083](https://github.com/clojure-emacs/cider/pull/4083): Make 
`cider-profile-toggle` honor its prefix argument (use the symbol at point 
unless prefixed), instead of always prompting.
-- [#4083](https://github.com/clojure-emacs/cider/pull/4083): Signal a clear 
error when `cider-apropos` is used in a ClojureScript context (it is only 
supported for Clojure), instead of returning misleading results.
-- [#4082](https://github.com/clojure-emacs/cider/pull/4082): Render a stack 
frame's `ns/fn` when it carries them (e.g. ClojureScript frames) instead of 
degrading to `nil/nil` for frames not tagged as Clojure 
([#4043](https://github.com/clojure-emacs/cider/issues/4043)).
-- [#4081](https://github.com/clojure-emacs/cider/pull/4081): Make 
`cider-stacktrace-suppressed-errors` customizable again (its `:type` described 
a fixed one-element list) and stop the stacktrace renderer from leaving a stray 
`fill-prefix` in the `*cider-error*` buffer.
+- [#4085](https://github.com/clojure-emacs/cider/pull/4085): Resolve 
unqualified ClojureScript core vars (e.g. their indentation metadata) against 
`cljs.core` in a cljs REPL, and make a prefix argument to `cider-find-keyword` 
invert `cider-prompt-for-symbol` like the sibling find commands.
+- [#4084](https://github.com/clojure-emacs/cider/pull/4084): A batch of 
nREPL-layer fixes: `nrepl-dict-merge` no longer mutates a shared literal when 
its first argument is nil, `nrepl-notify` no longer treats a notification's 
text as a format string, sync-request callbacks are reaped on 
`abort-on-input`/timeout exits (fixing a slow memory leak on the 
eldoc/completion path), `cider-find-keyword` errors cleanly when there is no 
keyword at point, and a missing server-side log appender is re [...]
+- [#4083](https://github.com/clojure-emacs/cider/pull/4083): Split the 
classpath on the platform path separator (fixing `cider-classpath` on Windows), 
stop `cider-format-region`/`cider-format-defun` from corrupting multi-line 
string and regex literals when the region starts at a non-zero column, make 
`cider-profile-toggle` honor its prefix argument, and signal a clear error when 
`cider-apropos` is used in a ClojureScript context.
+- [#4082](https://github.com/clojure-emacs/cider/pull/4082): Render a stack 
frame's `ns/fn` when it carries them (e.g. ClojureScript frames) instead of 
degrading to `nil/nil` 
([#4043](https://github.com/clojure-emacs/cider/issues/4043)).
+- [#4081](https://github.com/clojure-emacs/cider/pull/4081): Make 
`cider-stacktrace-suppressed-errors` customizable again and stop the stacktrace 
renderer from leaving a stray `fill-prefix` in the `*cider-error*` buffer.
 - [#4078](https://github.com/clojure-emacs/cider/issues/4078): Fix the 
menu-bar showing a duplicated "CIDER" menu when `cider-mode` is active.
-- Fix the debugger's `O` (force step-out) key, which aborted the session with 
an error because it sent an invalid `:force-out` command instead of a forced 
`:out`.
-- Fix the debugger's menu-bar menu: it advertised the wrong key for "Inject 
value" (`i` instead of `j`) and was missing entries for stepping in, showing 
the stacktrace, and tracing.
+- Debugger fixes: the `O` (force step-out) key no longer aborts the session 
with an error, and the menu-bar menu advertises the right key for "Inject 
value" plus the missing stepping/stacktrace/trace entries.
 - Fix `cider-log-kill-appender`'s confirmation message, which had the appender 
and framework names swapped.
 - [#4066](https://github.com/clojure-emacs/cider/pull/4066): Jump to the 
actual source when clicking a stack frame for a top-level anonymous function 
(the `deftest` shape), instead of landing in `clojure.core/fn` 
([#3157](https://github.com/clojure-emacs/cider/issues/3157)).
-- [#4058](https://github.com/clojure-emacs/cider/pull/4058): Signal a helpful 
error when `cider-javadoc` gets an unresolvable (non-absolute) Javadoc URL from 
the middleware, instead of silently doing nothing 
([#2969](https://github.com/clojure-emacs/cider/issues/2969)).
-- [#4054](https://github.com/clojure-emacs/cider/pull/4054): Interrupt every 
REPL an evaluation is dispatched to. In a `.cljc` buffer `cider-interrupt` 
previously interrupted only one of the two REPLs 
([#4036](https://github.com/clojure-emacs/cider/issues/4036)).
-- [#4053](https://github.com/clojure-emacs/cider/pull/4053): Restore point to 
the place a debug session was started from when you quit it with `q`, instead 
of leaving it stranded at the last breakpoint 
([#1595](https://github.com/clojure-emacs/cider/issues/1595)).
-- [#4049](https://github.com/clojure-emacs/cider/pull/4049): Font-lock 
streamed REPL results as a whole instead of per chunk, so values that nREPL 
splits across several chunks (much more common since nREPL 1.5.0's 
newline-triggered flushing) are highlighted correctly rather than left plain 
([nREPL #445](https://github.com/nrepl/nrepl/issues/445)).
-- [#4038](https://github.com/clojure-emacs/cider/pull/4038): SSH tunneling now 
forwards a free local port to the remote nREPL port instead of reusing the 
remote port number, so connecting to several remote REPLs that share a port no 
longer collide on localhost and a stale tunnel is no longer reused when you 
later connect to a local REPL on the same port 
([#3730](https://github.com/clojure-emacs/cider/issues/3730), 
[#3561](https://github.com/clojure-emacs/cider/issues/3561), [#3085](https [...]
-- [#4026](https://github.com/clojure-emacs/cider/pull/4026): 
`cider-macroexpand-1` and friends now work in ClojureScript for user-defined 
macros (fixed in `cider-nrepl`, delivered via the 0.61.0-alpha1 bump) 
([#2099](https://github.com/clojure-emacs/cider/issues/2099)).
-- [#4016](https://github.com/clojure-emacs/cider/pull/4016): Show the REPL 
prompt right away when a server (e.g. jank) sends `value` and `("done")` in the 
same response, instead of only after the next keypress 
([#3869](https://github.com/clojure-emacs/cider/issues/3869)).
-- [#4019](https://github.com/clojure-emacs/cider/pull/4019): Stop the dynamic 
local-variable font-locking from mistaking a `def`'s value for an arglist, 
which tagged literals, function names and other non-locals as locals 
(`cider-locals` false positives) 
([#3657](https://github.com/clojure-emacs/cider/issues/3657)).
-- [#4021](https://github.com/clojure-emacs/cider/pull/4021): Stop unbalanced 
parentheses in REPL output (e.g. printed strings or shadow-cljs warnings) from 
breaking sexp navigation and paredit in the REPL buffer 
([#3102](https://github.com/clojure-emacs/cider/issues/3102)).
+- [#4058](https://github.com/clojure-emacs/cider/pull/4058): Signal a helpful 
error when `cider-javadoc` gets an unresolvable Javadoc URL from the 
middleware, instead of silently doing nothing 
([#2969](https://github.com/clojure-emacs/cider/issues/2969)).
+- [#4054](https://github.com/clojure-emacs/cider/pull/4054): Interrupt every 
REPL an evaluation was dispatched to - in a `.cljc` buffer `cider-interrupt` 
previously interrupted only one of the two 
([#4036](https://github.com/clojure-emacs/cider/issues/4036)).
+- [#4053](https://github.com/clojure-emacs/cider/pull/4053): Restore point to 
the place a debug session was started from when quitting with `q` 
([#1595](https://github.com/clojure-emacs/cider/issues/1595)).
+- [#4049](https://github.com/clojure-emacs/cider/pull/4049): Font-lock 
streamed REPL results as a whole instead of per chunk, so values split across 
chunks are highlighted correctly ([nREPL 
#445](https://github.com/nrepl/nrepl/issues/445)).
+- [#4038](https://github.com/clojure-emacs/cider/pull/4038): SSH tunneling now 
forwards a free local port (with readiness detected by probing it, bounded by 
the new `nrepl-ssh-tunnel-timeout`), so remote REPLs sharing a port no longer 
collide on localhost 
([#3730](https://github.com/clojure-emacs/cider/issues/3730), 
[#3561](https://github.com/clojure-emacs/cider/issues/3561), 
[#3085](https://github.com/clojure-emacs/cider/issues/3085)).
+- [#4026](https://github.com/clojure-emacs/cider/pull/4026): 
`cider-macroexpand-1` and friends now work in ClojureScript for user-defined 
macros ([#2099](https://github.com/clojure-emacs/cider/issues/2099)).
+- [#4016](https://github.com/clojure-emacs/cider/pull/4016): Show the REPL 
prompt right away when a server (e.g. jank) sends `value` and `("done")` in the 
same response ([#3869](https://github.com/clojure-emacs/cider/issues/3869)).
+- [#4019](https://github.com/clojure-emacs/cider/pull/4019): Stop the 
local-variable font-locking from mistaking a `def`'s value for an arglist 
(`cider-locals` false positives) 
([#3657](https://github.com/clojure-emacs/cider/issues/3657)).
+- [#4021](https://github.com/clojure-emacs/cider/pull/4021): Stop unbalanced 
parentheses in REPL output from breaking sexp navigation and paredit in the 
REPL buffer ([#3102](https://github.com/clojure-emacs/cider/issues/3102)).
 - [#4020](https://github.com/clojure-emacs/cider/pull/4020): Show an error 
instead of failing silently when an interactive evaluation command is used with 
no REPL connected ([#3028](https://github.com/clojure-emacs/cider/issues/3028)).
-- [#4006](https://github.com/clojure-emacs/cider/pull/4006): Fix a doubled 
colon when both `cider-clojure-cli-global-aliases` and 
`cider-clojure-cli-aliases` are set in the documented `:foo:bar` form, which 
produced a malformed `-M:global::local:cider/nrepl` jack-in invocation.
+- [#4006](https://github.com/clojure-emacs/cider/pull/4006): Fix a doubled 
colon in the jack-in command when both `cider-clojure-cli-global-aliases` and 
`cider-clojure-cli-aliases` are set in the documented `:foo:bar` form.
 - [#3971](https://github.com/clojure-emacs/cider/pull/3971): Fix 
`cider-macroexpand-again` (`g` in the macroexpansion buffer) to actually 
re-expand the form instead of redisplaying the original input.
-- [#3986](https://github.com/clojure-emacs/cider/pull/3986): Signal a 
`user-error` (instead of a generic `error`) when a var to trace isn't found or 
isn't traceable, so the failure no longer triggers a backtrace under 
`debug-on-error`.
+- [#3986](https://github.com/clojure-emacs/cider/pull/3986): Signal a 
`user-error` when a var to trace isn't found or isn't traceable, so the failure 
no longer triggers a backtrace under `debug-on-error`.
 - [#4018](https://github.com/clojure-emacs/cider/pull/4018): Fix interleaving 
of value and stderr output in 
`cider-eval-pprint-with-multiline-comment-handler`.
 
 ### Changes
 
-- Bump the injected `cider-nrepl` to 
[0.62.1](https://github.com/clojure-emacs/cider-nrepl/blob/v0.62.1/CHANGELOG.md#0621-2026-07-15),
 which carries a batch of debugger and enlighten fixes (record literals survive 
instrumentation, clear errors for forms too large to instrument, and several 
`STATE__` crashes are gone).
-- [#4093](https://github.com/clojure-emacs/cider/pull/4093): In the REPL, `C-c 
M-m` now opens the macroexpand menu (matching `cider-mode`) instead of running 
`cider-macroexpand-all` directly, and `C-c C-r` no longer injects 
clojure-mode's source-editing refactor map.
-- [#4092](https://github.com/clojure-emacs/cider/pull/4092): Stop the `C-x 
C-e` and `C-c C-v` eval keybindings from running the source-buffer eval path in 
the REPL (which left fringe indicators and the like there) for a niche use 
case; evaluate at the prompt instead. `C-x C-e` is now a no-op in the REPL 
rather than falling through to Emacs's Emacs Lisp `eval-last-sexp`. 
Macroexpansion (`C-c C-m`/`C-c M-m`) and inspection (`C-c M-i`) stay bound.
+- [#4002](https://github.com/clojure-emacs/cider/pull/4002), 
[#4050](https://github.com/clojure-emacs/cider/pull/4050): Bump the injected 
`cider-nrepl` from 0.59.0 to 
[0.62.1](https://github.com/clojure-emacs/cider-nrepl/blob/v0.62.1/CHANGELOG.md#0621-2026-07-15)
 (and `piggieback` to 0.7.0); besides backing many of the features above, the 
new middleware honors the project's cljfmt configuration when formatting and 
carries a batch of debugger fixes.
+- Enable rich content in the REPL by default (`cider-repl-use-content-types` 
is now `t`): image results render inline, and external content (files, URLs) 
renders a `[show content]` button that fetches only on demand - the automatic 
fetching that got the feature disabled back in 0.25 
([#2825](https://github.com/clojure-emacs/cider/issues/2825)) is gone, and the 
server side is hardened in `cider-nrepl` 0.62.
+- [#4092](https://github.com/clojure-emacs/cider/pull/4092), 
[#4093](https://github.com/clojure-emacs/cider/pull/4093): Clean up the REPL's 
keybindings: the source-buffer eval keys no longer run the source-buffer eval 
path there (`C-x C-e` is a no-op at the REPL; evaluate at the prompt instead), 
`C-c M-m` now opens the macroexpand menu (matching `cider-mode`), and `C-c C-r` 
no longer injects clojure-mode's source-editing refactor map.
+- Renames and consolidations (in all cases the old names keep working as 
obsolete aliases):
+  - [#4052](https://github.com/clojure-emacs/cider/pull/4052): The inline 
evaluation-result options become a consistent `cider-eval-result-*` family: 
`cider-use-overlays` -> `cider-eval-result-display`, 
`cider-result-overlay-position` -> `cider-eval-result-position`, 
`cider-result-use-clojure-font-lock`/`cider-overlays-use-font-lock` -> 
`cider-eval-result-font-lock`, `cider-interactive-eval-output-destination` -> 
`cider-eval-output-destination`, and `cider-use-fringe-indicators` -> `cide 
[...]
+  - Consolidate the per-buffer auto-select options 
(`cider-auto-select-error-buffer` and friends) into a single 
`cider-auto-select-buffer`, which can be `t`, `nil` or a list of the popup 
buffers to select (e.g. `'(error inspector)`).
+  - Rename the REPL history browser from `cider-repl-history` to 
`cider-history` (command, mode and options), so its names no longer clash with 
the REPL's unrelated input-history settings.
+  - Rename `cider-log-buffer-clear-p` to `cider-log-buffer-has-content-p` - 
the old name read as the opposite of its behavior.
+  - [#4035](https://github.com/clojure-emacs/cider/pull/4035): Rename 
`cider-ensure-connected` to `cider-ensure-session`.
+  - [#4033](https://github.com/clojure-emacs/cider/pull/4033): Deprecate the 
legacy connection-named aliases (`cider-current-connection`, 
`cider-connections`, `cider-map-connections`, 
`cider-connection-type-for-buffer`) in favor of their `cider-repl` counterparts.
+  - [#4029](https://github.com/clojure-emacs/cider/pull/4029): Deprecate the 
positional request APIs in favor of their keyword-argument counterparts 
(`cider-nrepl-send-sync-request` -> `cider-nrepl-sync-request`, 
`cider-nrepl-request:eval` -> `cider-nrepl-send-eval-request`, and the `nrepl-` 
equivalents).
+  - [#4028](https://github.com/clojure-emacs/cider/pull/4028): Deprecate 
`cider-ensure-op-supported`; op support is now enforced automatically by the 
nREPL senders.
 - [#4081](https://github.com/clojure-emacs/cider/pull/4081): Remove the 
long-obsolete (no-op since 1.18) `cider-stacktrace-analyze-at-point` and 
`cider-stacktrace-analyze-in-region` commands.
-- Bump the injected `cider-nrepl` to 0.62.0 (and `piggieback` to 0.7.0), which 
carries the hardened content-type/slurp middleware backing the rich-content 
revival below (and no longer double-sends `value` alongside content-typed 
responses).
-- Enable rich content in the REPL by default (`cider-repl-use-content-types` 
is now t): image results render inline, and results naming external content 
(files, URLs) render a `[show content]` button that fetches and renders it on 
demand. The automatic fetching that got the feature disabled back in 0.25 
([#2825](https://github.com/clojure-emacs/cider/issues/2825)) is gone - nothing 
is transferred until the button is pressed - and the server side is hardened in 
`cider-nrepl` 0.62 (URL-sch [...]
-- Rename `cider-log-buffer-clear-p` to `cider-log-buffer-has-content-p` - the 
old name read as the opposite of its behavior; it remains as an obsolete alias.
+- Quieter REPL startup 
([#3983](https://github.com/clojure-emacs/cider/pull/3983), 
[#3984](https://github.com/clojure-emacs/cider/pull/3984)): the long welcome 
banner and the echoed jack-in command/ClojureScript init form are gone, 
replaced by a one-line hint; the details are available on demand via 
`cider-repl-help` (`C-c C-h`, or the `,refcard` REPL shortcut) and 
`cider-repl-describe-startup` (`,startup`).
+- [#3982](https://github.com/clojure-emacs/cider/pull/3982): Warn (once per 
session) when a deprecated CIDER keybinding is used, starting with the 
REPL-only jack-in/connect keys superseded back in 0.18; see 
`cider-warn-on-deprecated-keybindings` and `M-x 
cider-list-deprecated-keybindings`.
 - Bump the default `cider-repl-history-size` from 500 to 5000.
-- Rename the REPL history browser from `cider-repl-history` to `cider-history` 
(command, mode and options), so its names no longer clash with the REPL's 
unrelated input-history settings (`cider-repl-history-file`, 
`cider-repl-history-size`); the old names keep working as obsolete aliases.
-- Color the nREPL messages buffer with customizable faces 
(`nrepl-message-faces`, a palette of eight distinct hues with light- and 
dark-background variants) instead of a hardcoded color list; 
`nrepl-message-colors` is now obsolete, but still takes precedence when 
customized.
-- Consolidate the per-buffer auto-select options into a single 
`cider-auto-select-buffer`, which can be `t`, `nil` or a list of the popup 
buffers to select (e.g. `'(error inspector)`); the old options 
(`cider-auto-select-error-buffer`, `cider-auto-select-test-report-buffer`, 
`cider-doc-auto-select-buffer`, `cider-inspector-auto-select-buffer`, 
`cider-cheatsheet-auto-select-buffer` and 
`cider-log-auto-select-frameworks-buffer`) are now obsolete, but still take 
precedence when customized.
+- Color the nREPL messages buffer with customizable faces 
(`nrepl-message-faces`, with light- and dark-background variants) instead of a 
hardcoded color list; `nrepl-message-colors` is now obsolete, but still takes 
precedence when customized.
 - [#4059](https://github.com/clojure-emacs/cider/pull/4059): Use the public 
`sesman-sessions` (via `cider-sessions`) instead of a private sesman function 
in `cider-debug-sesman-friendly-session-p` 
([#4037](https://github.com/clojure-emacs/cider/issues/4037)).
-- [#4056](https://github.com/clojure-emacs/cider/pull/4056): Show the 
interactive-evaluation spinner in the buffer you evaluated from (the source 
buffer, or the REPL when evaluating at its prompt) instead of always in the 
REPL buffer, which is often not even visible 
([#3516](https://github.com/clojure-emacs/cider/issues/3516)).
-- [#4052](https://github.com/clojure-emacs/cider/pull/4052): Rename the inline 
evaluation-result options into a consistent `cider-eval-result-*` family: 
`cider-use-overlays` -> `cider-eval-result-display`, 
`cider-result-overlay-position` -> `cider-eval-result-position`, 
`cider-result-use-clojure-font-lock` and `cider-overlays-use-font-lock` -> 
`cider-eval-result-font-lock`, `cider-interactive-eval-output-destination` -> 
`cider-eval-output-destination`, and `cider-use-fringe-indicators` - [...]
-- [#4050](https://github.com/clojure-emacs/cider/pull/4050): Bump the injected 
`cider-nrepl` to 0.61.0 (and `piggieback` to 0.6.2). Code formatting now honors 
the project's cljfmt configuration.
-- [#4047](https://github.com/clojure-emacs/cider/pull/4047): Render the doc 
buffer's "See also" section as a bulleted list (one entry per line) instead of 
an inline space-separated run, matching the ClojureDocs buffer.
-- [#4046](https://github.com/clojure-emacs/cider/pull/4046): Make eldoc 
asynchronous - the arglist/var lookup no longer blocks Emacs on an nREPL 
round-trip as you move the cursor (it uses eldoc's callback protocol and 
delivers the result when it arrives). Declines the eldoc slot when CIDER has 
nothing, so other sources (e.g. clojure-lsp) compose cleanly.
-- [#4035](https://github.com/clojure-emacs/cider/pull/4035): Rename 
`cider-ensure-connected` to `cider-ensure-session` (it ensures a linked CIDER 
session); the old name remains as an obsolete alias.
-- [#4033](https://github.com/clojure-emacs/cider/pull/4033): Deprecate the 
legacy connection-named aliases `cider-current-connection`, 
`cider-connections`, `cider-map-connections` and 
`cider-connection-type-for-buffer` in favor of their `cider-repl` counterparts.
-- [#4029](https://github.com/clojure-emacs/cider/pull/4029): Finish migrating 
to the keyword-argument request APIs and deprecate the positional shims: 
`cider-nrepl-send-sync-request` -> `cider-nrepl-sync-request`, 
`cider-nrepl-request:eval` -> `cider-nrepl-send-eval-request`, 
`nrepl-send-sync-request` -> `nrepl-sync-request`, `nrepl-request:eval` -> 
`nrepl-send-eval-request`.
-- [#4028](https://github.com/clojure-emacs/cider/pull/4028): Deprecate 
`cider-ensure-op-supported`; op support is now enforced automatically by the 
nREPL senders, so commands no longer need an explicit check.
-- [#4026](https://github.com/clojure-emacs/cider/pull/4026): Bump the injected 
`cider-nrepl` to 0.61.0-alpha1, which provides ClojureScript test support, the 
`clojure-only` op signal and the ClojureScript macroexpansion fix.
-- [#4026](https://github.com/clojure-emacs/cider/pull/4026): Show a clear 
message when a Clojure-only operation (apropos, xref, trace, profile, refresh, 
reload, undef, spec) is invoked under a ClojureScript REPL, instead of failing 
confusingly or returning JVM-only results (requires a recent enough 
`cider-nrepl`) ([#2198](https://github.com/clojure-emacs/cider/issues/2198)).
-- [#4022](https://github.com/clojure-emacs/cider/pull/4022): 
`cider-inspect-last-sexp` now inspects the tagged class when point is on a type 
tag (e.g. `^String`), instead of the form the tag applies to 
([#3679](https://github.com/clojure-emacs/cider/issues/3679)).
+- [#4056](https://github.com/clojure-emacs/cider/pull/4056): Show the 
interactive-evaluation spinner in the buffer you evaluated from, instead of 
always in the REPL buffer 
([#3516](https://github.com/clojure-emacs/cider/issues/3516)).
+- [#4047](https://github.com/clojure-emacs/cider/pull/4047): Render the doc 
buffer's "See also" section as a bulleted list, matching the ClojureDocs buffer.
+- [#4046](https://github.com/clojure-emacs/cider/pull/4046): Make eldoc 
asynchronous - the arglist/var lookup no longer blocks Emacs as you move the 
cursor - and decline the eldoc slot when CIDER has nothing, so other sources 
(e.g. clojure-lsp) compose cleanly.
+- [#4026](https://github.com/clojure-emacs/cider/pull/4026): Show a clear 
message when a Clojure-only operation (apropos, xref, trace, profile, refresh, 
reload, undef, spec) is invoked under a ClojureScript REPL, instead of failing 
confusingly ([#2198](https://github.com/clojure-emacs/cider/issues/2198)).
+- [#4022](https://github.com/clojure-emacs/cider/pull/4022): 
`cider-inspect-last-sexp` now inspects the tagged class when point is on a type 
tag (e.g. `^String`) 
([#3679](https://github.com/clojure-emacs/cider/issues/3679)).
 - [#4024](https://github.com/clojure-emacs/cider/pull/4024): The 
`*cider-ns-refresh-log*` buffer now supports `r`/`g`/`C-c M-n r` to re-run the 
refresh from within it 
([#2798](https://github.com/clojure-emacs/cider/issues/2798)).
-- [#4005](https://github.com/clojure-emacs/cider/pull/4005): Render the 
namespace browser (`cider-browse-ns`) on the `cider-tree-view` widget: groups 
(by type or visibility) are now foldable with `TAB`, and `n`/`p` move between 
entries.
-- [#4003](https://github.com/clojure-emacs/cider/pull/4003): Turn `C-c M-m` 
into a prefix map (`cider-macroexpand-map`) grouping all the macro-expanding 
commands - `macroexpand-1`/`macroexpand-all` into a buffer (`1`/`a`) and the 
inline `cider-macrostep` commands (`e`/`E`/`b`). `cider-macroexpand-all` thus 
moves from `C-c M-m` to `C-c M-m a`; `C-c C-m` still runs `macroexpand-1` 
directly.
-- [#4002](https://github.com/clojure-emacs/cider/pull/4002): Bump the injected 
`cider-nrepl` to 0.60.0, which provides the `cider/who-implements`, 
`cider/type-protocols` and `cider/protocols-with-method` ops backing the 
protocol-exploration commands.
-- [#4001](https://github.com/clojure-emacs/cider/pull/4001): 
`cider-type-protocols` and `cider-protocols-with-method` now use cider-nrepl's 
`cider/type-protocols` and `cider/protocols-with-method` ops when available, 
falling back to the previous client-side query otherwise.
-- [#4000](https://github.com/clojure-emacs/cider/pull/4000): 
`cider-who-implements` now makes a multimethod's methods jump to their 
`defmethod` definitions, located by searching the project's source (the method 
functions carry no source metadata at runtime, so there's nothing for the 
runtime to point at).
-- [#3998](https://github.com/clojure-emacs/cider/pull/3998): 
`cider-who-implements` now uses cider-nrepl's `cider/who-implements` op when 
available, so it also lists inline `defrecord`/`deftype` implementers and jumps 
to each implementation's source; it falls back to the previous client-side 
approximation otherwise.
-- [#3993](https://github.com/clojure-emacs/cider/pull/3993): Round out the 
`*cider-trace*` buffer: navigate between calls with `n`/`p`, jump to a 
function's definition (`.` or click its name), fold or unfold every call at 
once (`F`/`U`), click a call line to fold it, and a `CIDER Trace` menu.
-- [#3992](https://github.com/clojure-emacs/cider/pull/3992): Make 
`*cider-trace*` calls foldable - `TAB` on a call line collapses or expands the 
nested calls between it and its return.
-- [#3984](https://github.com/clojure-emacs/cider/pull/3984): Stop dumping the 
full jack-in command and the ClojureScript REPL init form into the REPL 
transcript on startup (a ClojureScript REPL now just notes its type). The 
launch details are available on demand via `cider-repl-describe-startup` (the 
`,startup` REPL shortcut).
-- [#3983](https://github.com/clojure-emacs/cider/pull/3983): Slim down the 
REPL welcome banner - the long help banner is gone, replaced by a one-line 
hint, and the getting-started content now lives in a summonable 
`cider-repl-help` reference card (`C-c C-h`, or the `,refcard` REPL shortcut). 
`cider-repl-display-help-banner` now toggles the hint.
-- [#3982](https://github.com/clojure-emacs/cider/pull/3982): Warn (once per 
session) when a deprecated CIDER keybinding is used, starting with the 
REPL-only jack-in/connect keys `C-c M-j`/`M-J`/`M-c`/`M-C` (superseded by the 
`C-c C-x` start map back in 0.18.0). They still work; toggle with 
`cider-warn-on-deprecated-keybindings`, list pending removals with `M-x 
cider-list-deprecated-keybindings`.
-- [#3980](https://github.com/clojure-emacs/cider/pull/3980): Keep the 
load-state indicators in sync across `cider-ns-reload`/`cider-ns-reload-all` 
and `cider-ns-refresh`: the reloaded namespaces' (unsaved-edit-free) buffers 
get their fringe and mode-line markers refreshed, instead of staying stale 
until the next `cider-load-buffer`. These commands now run 
`cider-file-loaded-hook` for the reloaded buffers, so `cider-auto-test-mode` 
re-runs their tests too (matching what `cider-load-buffer [...]
-- [#3967](https://github.com/clojure-emacs/cider/pull/3967): Refresh the 
embedded Clojure cheatsheet with functions added since Clojure 1.11 
(`partitionv`, `partitionv-all`, `splitv-at`, `clojure.repl.deps`, 
`clojure.java.process`, the `clojure.core` Java-stream helpers, and more 
`clojure.math` members).
-- [#3967](https://github.com/clojure-emacs/cider/pull/3967): Give the 
cheatsheet buffer a dedicated `cider-cheatsheet-mode` with fontified section 
headers and `TAB`/`S-TAB` navigation between entries.
-- [#3971](https://github.com/clojure-emacs/cider/pull/3971): Add `n` and `t` 
keys in the macroexpansion buffer to cycle namespace display 
(`cider-macroexpansion-display-namespaces`) and toggle metadata 
(`cider-macroexpansion-print-metadata`), re-expanding in place.
-- [#3971](https://github.com/clojure-emacs/cider/pull/3971): Show a header 
line in the macroexpansion buffer with the active expander, display options and 
key hints.
-- [#3972](https://github.com/clojure-emacs/cider/pull/3972): Briefly highlight 
(pulse) the result after macroexpanding, both in the macroexpansion buffer and 
with inline `cider-macrostep` (toggle via 
`cider-macroexpansion-highlight-expansion`).
-- [#3972](https://github.com/clojure-emacs/cider/pull/3972): When 
macroexpanding an unresolved symbol (e.g. a macro whose namespace hasn't been 
evaluated yet), a special form, or a non-macro, the macroexpansion commands now 
report a helpful message instead of silently doing nothing.
-- [#3979](https://github.com/clojure-emacs/cider/pull/3979): Extend those 
actionable resolution hints to `cider-find-var`, `cider-doc` and the 
ClojureDocs commands, and tell an unloaded namespace (evaluate the buffer 
first) apart from a genuinely unresolved symbol (a typo or a missing require).
-- [#3979](https://github.com/clojure-emacs/cider/pull/3979): Tell "no 
references/dependencies found" apart from an unresolved symbol in 
`cider-xref-fn-refs` and `cider-xref-fn-deps`, and warn instead of showing an 
empty buffer when `cider-browse-ns` is pointed at a namespace that isn't loaded.
-- [#3968](https://github.com/clojure-emacs/cider/pull/3968): Add a menu and 
per-var key bindings to the cheatsheet buffer (`d` for docs, `c` for 
ClojureDocs, `w` for ClojureDocs in the browser).
+- [#4005](https://github.com/clojure-emacs/cider/pull/4005): Render the 
namespace browser (`cider-browse-ns`) on the `cider-tree-view` widget: groups 
are foldable with `TAB`, and `n`/`p` move between entries.
+- [#4003](https://github.com/clojure-emacs/cider/pull/4003): Turn `C-c M-m` 
into a prefix map (`cider-macroexpand-map`) grouping all the macro-expanding 
commands; `cider-macroexpand-all` thus moves from `C-c M-m` to `C-c M-m a`, 
while `C-c C-m` still runs `macroexpand-1` directly.
+- Macroexpansion buffer polish 
([#3971](https://github.com/clojure-emacs/cider/pull/3971), 
[#3972](https://github.com/clojure-emacs/cider/pull/3972)): `n`/`t` cycle 
namespace display and toggle metadata in place, a header line shows the active 
expander and options, expansions briefly pulse, and expanding a special form, 
non-macro or unresolved symbol reports a helpful message instead of silently 
doing nothing.
+- [#3979](https://github.com/clojure-emacs/cider/pull/3979): Give 
`cider-find-var`, `cider-doc`, the ClojureDocs commands and the xref/browse-ns 
commands actionable resolution hints, telling an unloaded namespace (evaluate 
the buffer first) apart from a genuinely unresolved symbol.
+- Cheatsheet refresh 
([#3967](https://github.com/clojure-emacs/cider/pull/3967), 
[#3968](https://github.com/clojure-emacs/cider/pull/3968)): add the functions 
introduced since Clojure 1.11, a dedicated `cider-cheatsheet-mode` with 
fontified section headers and `TAB`/`S-TAB` navigation, and a menu plus per-var 
keys for docs and ClojureDocs.
 
 ## 1.22.2 (2026-06-17)
 

Reply via email to