Closed DerGuteMoritz closed 5 months ago
Thanks, I'll check.
The bug is that one should be able to specify {:style/indent nil}
and have cider-nrepl honor that explicit specification.
Most likely we conflate "nothing was specified at all" with "nil
was specified".
I'll try to fix this in the first half of the week, please do ping us if that doesn't happen.
(PR also welcome for anyone wanting to grab it)
Friendly ping :smile: No hurry, though. I'll also try to look into it using your hint when I find some spare cycles again. But that might be a while.
You can check out https://github.com/clojure-emacs/cider-nrepl/commit/7fdca1335bcd51a10b883f301b00f89d620d6688 and run:
export LEIN_JVM_OPTS="-Dmranderson.internal.no-parallelism=true"
PROJECT_VERSION=0.49.0 make install
Change, if needed, 0.49.0 to whatever version of cider-nrepl you normally use.
Then, adding {:style/indent nil}
should work.
LMK how it goes - thanks!
Thanks!
Then, adding
{:style/indent nil}
should work.
Where would I add that? To the macro's metadata? If so, then this won't do the trick for third-party macros, e.g. promesa.core/->>
, right?
(Unless they are willing to include it upstream, that is)
To the macro's metadata?
Yes. You can alter-meta
as a local experiment.
After we conclude it works, I can PR it myself in case a generous explanation helps th change making it in.
Expected behavior
Custom threading macros (like the ones found in
promesa
) should be indented like the ones fromclojure.core
when operands are given in separate lines, i.e. they should line up vertically like so:Actual behavior
Instead, CIDER indents such custom macros like a macro with a "head" form (e.g. like
doto
):This might be a regression of the fix introduced for #3490.
Steps to reproduce the problem
promesa
)M-x cider-jack-in
from the project root and select theclojure-cli
commandsrc/repro/core.clj
and re-indent themain
function in therep/ok->>
form will be indented likeclojure.core/->>
but thep/not-ok->>
form won't. If you look at their definitions insrc/repro/p.cljc
you can see that the only difference is thatnot-ok->>
has a standalone first argument whileok->>
doesn't. This also happens when renamingnot-ok->>
to just->>
(as is the case inpromesa
).This also happens with ClojureScript which can be tested by
M-x cider-jack-in-cljs
and selecting the:main
build.Environment & Version information
CIDER version information
Lein / Clojure CLI version
Clojure CLI version 1.11.3.1463
Emacs version
GNU Emacs 29.3 (build 1, x86_64-pc-linux-gnu, X toolkit, cairo version 1.18.0, Xaw3d scroll bars)
Operating system
NixOS 24.05
JDK distribution
OpenJDK