This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2023-10-11
Channels
- # announcements (5)
- # babashka (43)
- # beginners (78)
- # calva (1)
- # cider (35)
- # clj-kondo (15)
- # clj-otel (3)
- # cljs-dev (2)
- # clojure (24)
- # clojure-denmark (1)
- # clojure-dev (9)
- # clojure-europe (43)
- # clojure-israel (1)
- # clojure-italy (1)
- # clojure-losangeles (3)
- # clojure-nl (1)
- # clojure-norway (54)
- # clojure-romania (1)
- # clojure-uk (2)
- # clojurescript (1)
- # core-async (25)
- # cursive (7)
- # datascript (6)
- # datomic (7)
- # docker (2)
- # emacs (2)
- # events (8)
- # exercism (2)
- # fulcro (2)
- # hyperfiddle (16)
- # lsp (46)
- # malli (10)
- # membrane (2)
- # music (6)
- # nbb (30)
- # off-topic (49)
- # polylith (4)
- # reagent (3)
- # releases (4)
- # shadow-cljs (5)
- # slack-help (1)
- # sql (2)
- # testing (2)
- # timbre (6)
- # tools-deps (29)
- # xtdb (36)
In newer versions of CIDER, the async
macro from cljs.test seems to no longer indent as before. In particular, the old indentation behaved like defn
. e.g.
(async done
(go
...
(done)))
However CIDER 1.8.0-snapshot gives me
(async done
(go
...
(done)))
Was this change intentional?There is a new feature called indentation inference for macros in CIDER 1.8. https://github.com/clojure-emacs/cider/issues/3490
I'll fix it for async
given that it seems unlikely that clojurescript will ever use :style/indent
metadata
Turns out, it seemingly has nothing to do, because cljs
namespaces were handled long ago: https://github.com/clojure-emacs/cider-nrepl/blob/69f4b18317328a5e87a42e01dc335f4acd554f3d/src/cider/nrepl/middleware/track_state.clj#L54-L55
async
has never been declared in https://github.com/clojure-emacs/clojure-mode/blob/master/clojure-mode.el so it would surprise me if it really ever indented as you wanted? (which I agree that is better)
(put-clojure-indent 'async 1)
works. Maybe you were used to a project that had something similar in .dir-locals.el ?
Anyway, it sounds like we could just add an entry here https://github.com/clojure-emacs/clojure-mode/blob/5fab97d0efc1ed932518fba0cb90afe6dcd00191/clojure-mode.el#L1815
I don’t recall any particular overrides with dir-locals. (I do have dir-locals in the project involving async cljs tests, but the values are for configuring CIDER and fill-mode, not clojure-mode)
Assuming clojure-mode has never indented this form and CIDER does not infer the indentation of the macro, this may be a case of manual indentation in the past and I simply forgot about it.
Is stack overflow when inspecting a long string a known issue?
Never hard of it, feel free to create an issue right away (if possible, post the stacktrace, even if long. If it's long, please use a Gist)
issue? maybe I'll post a minimal example for you to see if it's the same? maybe it's my emacs thing
https://github.com/clojure-emacs/cider/issues/1115
https://github.com/clojure-emacs/cider/issues/3219
seems like related issues. (setq cider-repl-display-output-before-window-boundaries t)
doesn't work.
In your OP you mentioned a stack overflow when inspecting a string.
Neither of those issues has to do much with StackOverflowError
s or the cider inspector.
Please simply post exactly the problem that you're experiencing, don't be afraid to post a duplicate. Those issues are closed so any occurrence now is considered new.
Okay, I posted the issue https://github.com/clojure-emacs/cider/issues/3511
I enabled cider-enrich-classpath
and now I'm getting this when trying to jack in:
error in process sentinel: nrepl-server-sentinel: Could not start nREPL server: /Users/user/.emacs.d/elpa/cider-20231010.1449/clojure.sh: eval: line 47: syntax error near unexpected token `('
Can help investigate.it’s ending up in the clojure.sh
script which i’m not familiar with
https://github.com/clojure-emacs/cider/blob/master/clojure.sh
cmd=$(tail -n1 <(echo "$output"))
I wonder if some stderr is getting involved or some kinds of logging
I tried that, but the $cmd it generates is a huge swath of classpath entries and other things, so I'd wait for somebody familiar with the feature to give me directions before I dig into that 😄
i saw there was a change 2 weeks ago to that file that changed the enrich classpath version 1.17.2 -> 1.18.0 old > output=$(2>&1 “$clojure” -Sforce -Srepro -J-XX:-OmitStackTraceInFastThrow -J-Dclojure.main.report=stderr -Sdeps ‘{:deps {mx.cider/tools.deps.enrich-classpath {:mvn/version “1.17.2"}}}’ -M -m cider.enrich-classpath.clojure “$clojure” “$here” “true” “$@“) new > output=$(2>&1 “$clojure” -Sforce -Srepro -J-XX:-OmitStackTraceInFastThrow -J-Dclojure.main.report=stderr -Sdeps ‘{:deps {mx.cider/tools.deps.enrich-classpath {:mvn/version “1.18.0"}}}’ -M -m cider.enrich-classpath.clojure “$clojure” “$here” “true” “$@“) maybe you could change that version back to the old one and see if it works?
I tested it now again (as I did a couple days ago) and it keeps working. Recently I added a shellcheck CI check to it as well.
I'd try to run it in a small project first to check if there's any fundamental issue.
Another thing you can do is modify this script to e.g. dump data to debug.txt
so that you can check if there's anything suspicious.
Finally, there's this alternative way of running enrich-classpath that doesn't involve clojure.sh, but a Makefile instead: https://github.com/clojure-emacs/enrich-classpath#any-lein-or-toolsdeps-project
You can try that Makefile, and, just like before, modify it at will
(In a future, a .bb script will be the main offering - it's neater and runs everywhere)
> I tried that, but the $cmd it generates is a huge swath of classpath entries and other things, so I'd wait for somebody familiar with the feature to give me directions before I dig into that Ah I didn't read this - happy that both of you figured out that it was possible :) Please share that as a gist, for instance
eval '/opt/homebrew/bin/clojure -Sforce -Srepro -J-XX:-OmitStackTraceInFastThrow -J-Dclojure.main.report=stderr -Scp src:res:vendor:/Users/alex/.m2/repository/org/clojure/clojure/1.11.1/clojure-1.11.1.jar:/Users/alex/.m2/repository/org/clojure/core.async/1.5.644/core.async-1.5.644.jar:/Users/alex/.m2/repository/org/clojure/core.cache/1.0.225/core.cache-1.0.225.jar:/Users/alex/.m2/repository/org/clojure/core.memoize/1.0.253/core.memoize-1.0.253.jar:/Users/alex/.m2/repository/org/clojure/core.specs.alpha/0.2.62/core.specs.alpha-0.2.62.jar:/Users/alex/.m2/repository/org/clojure/data.codec/0.1.0/data.codec-0.1.0.jar:/Users/alex/.m2/repository/org/clojure/data.json/2.4.0/data.json-2.4.0.jar:/Users/alex/.m2/repository/org/clojure/data.priority-map/1.1.0/data.priority-map-1.1.0.jar:/Users/alex/.m2/repository/org/clojure/data.xml/0.2.0-alpha6/data.xml-0.2.0-alpha6.jar:/Users/alex/.m2/repository/org/clojure/spec.alpha/0.3.218/spec.alpha-0.3.218.jar:/Users/alex/.m2/repository/org/clojure/tools.analyzer/1.1.0/tools.analyzer-1.1.0.jar:/Users/alex/.m2/repository/org/clojure/tools.analyzer.jvm/1.2.1/tools.analyzer.jvm-1.2.1.jar:/Users/alex/.m2/repository/org/clojure/tools.cli/1.0.206/tools.cli-1.0.206.jar:/Users/alex/.m2/repository/org/clojure/tools.gitlibs/2.4.181/tools.gitlibs-2.4.181.jar:/Users/alex/.m2/repository/org/clojure/tools.logging/1.2.1/tools.logging-1.2.1.jar:/Users/alex/.m2/repository/org/clojure/tools.reader/1.3.6/tools.reader-1.3.6.jar:/Users/alex/.m2/repository/cider/cider-nrepl/0.39.0/cider-nrepl-0.39.0.jar:/Users/alex/.m2/repository/nrepl/nrepl/1.0.0/nrepl-1.0.0.jar:/Users/alex/.m2/repository/refactor-nrepl/refactor-nrepl/3.9.0/refactor-nrepl-3.9.0.jar:/Users/alex/.m2/repository/aopalliance/aopalliance/1.0/aopalliance-1.0.jar:/Users/alex/.m2/repository/cider/orchard/0.16.1/orchard-0.16.1.jar:/Users/alex/.m2/repository/clj-http/clj-http/3.10.0/clj-http-3.10.0.jar:/Users/alex/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar:/Users/alex/.m2/repository/com/clojure-goes-fast/clj-async-profiler/1.0.5/clj-async-profiler-1.0.5.jar:/Users/alex/.m2/repository/com/clojure-goes-fast/clj-java-decompiler/0.3.4/clj-java-decompiler-0.3.4.jar:/Users/alex/.m2/repository/com/clojure-goes-fast/clj-memory-meter/0.3.0/clj-memory-meter-0.3.0.jar:/Users/alex/.m2/repository/com/clojure-goes-fast/virgil/0.2.0/virgil-0.2.0.jar:/Users/alex/.m2/repository/com/cognitect/http-client/1.0.110/http-client-1.0.110.jar:/Users/alex/.m2/repository/com/cognitect/aws/api/0.8.539/api-0.8.539.jar:/Users/alex/.m2/repository/com/cognitect/aws/endpoints/1.1.12.150/endpoints-1.1.12.150.jar:/Users/alex/.m2/repository/com/cognitect/aws/s3/814.2.1053.0/s3-814.2.1053.0.jar:/Users/alex/.m2/repository/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar:/Users/alex/.m2/repository/com/google/errorprone/error_prone_annotations/2.7.1/error_prone_annotations-2.7.1.jar:/Users/alex/.m2/repository/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar:/Users/alex/.m2/repository/com/google/guava/guava/31.0.1-android/guava-31.0.1-android.jar:/Users/alex/.m2/repository/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar:/Users/alex/.m2/repository/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar:/Users/alex/.m2/repository/commons-codec/commons-codec/1.12/commons-codec-1.12.jar:/Users/alex/.m2/repository/commons-io/commons-io/2.11.0/commons-io-2.11.0.jar:/Users/alex/.m2/repository/commons-logging/commons-logging/1.2/commons-logging-1.2.jar:/Users/alex/.m2/repository/criterium/criterium/0.4.5/criterium-0.4.5.jar:/Users/alex/.m2/repository/javax/annotation/javax.annotation-api/1.2/javax.annotation-api-1.2.jar:/Users/alex/.m2/repository/javax/enterprise/cdi-api/1.2/cdi-api-1.2.jar:/Users/alex/.m2/repository/javax/inject/javax.inject/1/javax.inject-1.jar:/Users/alex/.m2/repository/mx/cider/logjam/0.1.1/logjam-0.1.1.jar:/Users/alex/.m2/repository/org/apache/commons/commons-lang3/3.8.1/commons-lang3-3.8.1.jar:/Users/alex/.m2/repository/org/apache/httpcomponents/httpasyncclient/4.1.4/httpasyncclient-4.1.4.jar:/Users/alex/.m2/repository/org/apache/httpcomponents/httpclient/4.5.13/httpclient-4.5.13.jar:/Users/alex/.m2/repository/org/apache/httpcomponents/httpclient-cache/4.5.8/httpclient-cache-4.5.8.jar:/Users/alex/.m2/repository/org/apache/httpcomponents/httpcore/4.4.13/httpcore-4.4.13.jar:/Users/alex/.m2/repository/org/apache/httpcomponents/httpcore-nio/4.4.10/httpcore-nio-4.4.10.jar:/Users/alex/.m2/repository/org/apache/httpcomponents/httpmime/4.5.8/httpmime-4.5.8.jar:/Users/alex/.m2/repository/org/apache/maven/maven-artifact/3.8.4/maven-artifact-3.8.4.jar:/Users/alex/.m2/repository/org/apache/maven/maven-builder-support/3.8.4/maven-builder-support-3.8.4.jar:/Users/alex/.m2/repository/org/apache/maven/maven-core/3.8.4/maven-core-3.8.4.jar:/Users/alex/.m2/repository/org/apache/maven/maven-model/3.8.4/maven-model-3.8.4.jar:/Users/alex/.m2/repository/org/apache/maven/maven-model-builder/3.8.4/maven-model-builder-3.8.4.jar:/Users/alex/.m2/repository/org/apache/maven/maven-plugin-api/3.8.4/maven-plugin-api-3.8.4.jar:/Users/alex/.m2/repository/org/apache/maven/maven-repository-metadata/3.8.4/maven-repository-metadata-3.8.4.jar:/Users/alex/.m2/repository/org/apache/maven/maven-resolver-provider/3.8.4/maven-resolver-provider-3.8.4.jar:/Users/alex/.m2/repository/org/apache/maven/maven-settings/3.8.4/maven-settings-3.8.4.jar:/Users/alex/.m2/repository/org/apache/maven/maven-settings-builder/3.8.4/maven-settings-builder-3.8.4.jar:/Users/alex/.m2/repository/org/apache/maven/resolver/maven-resolver-api/1.6.3/maven-resolver-api-1.6.3.jar:/Users/alex/.m2/repository/org/apache/maven/resolver/maven-resolver-connector-basic/1.6.3/maven-resolver-connector-basic-1.6.3.jar:/Users/alex/.m2/repository/org/apache/maven/resolver/maven-resolver-impl/1.6.3/maven-resolver-impl-1.6.3.jar:/Users/alex/.m2/repository/org/apache/maven/resolver/maven-resolver-spi/1.6.3/maven-resolver-spi-1.6.3.jar:/Users/alex/.m2/repository/org/apache/maven/resolver/maven-resolver-transport-file/1.6.3/maven-resolver-transport-file-1.6.3.jar:/Users/alex/.m2/repository/org/apache/maven/resolver/maven-resolver-transport-http/1.6.3/maven-resolver-transport-http-1.6.3.jar:/Users/alex/.m2/repository/org/apache/maven/resolver/maven-resolver-util/1.6.3/maven-resolver-util-1.6.3.jar:/Users/alex/.m2/repository/org/apache/maven/shared/maven-shared-utils/3.3.4/maven-shared-utils-3.3.4.jar:/Users/alex/.m2/repository/org/bitbucket/mstrobel/procyon-compilertools/0.6.0/procyon-compilertools-0.6.0.jar:/Users/alex/.m2/repository/org/bitbucket/mstrobel/procyon-core/0.6.0/procyon-core-0.6.0.jar:/Users/alex/.m2/repository/org/checkerframework/checker-compat-qual/2.5.5/checker-compat-qual-2.5.5.jar:/Users/alex/.m2/repository/org/checkerframework/checker-qual/3.12.0/checker-qual-3.12.0.jar:/Users/alex/.gitlibs/libs/org.clojure/tools.deps.alpha/8f8fc2571e721301b6d52e191129248355cb8c5a/src/main/resources:/Users/alex/.gitlibs/libs/org.clojure/tools.deps.alpha/8f8fc2571e721301b6d52e191129248355cb8c5a/src/main/clojure:/Users/alex/.m2/repository/org/codehaus/plexus/plexus-cipher/2.0/plexus-cipher-2.0.jar:/Users/alex/.m2/repository/org/codehaus/plexus/plexus-classworlds/2.6.0/plexus-classworlds-2.6.0.jar:/Users/alex/.m2/repository/org/codehaus/plexus/plexus-component-annotations/2.1.0/plexus-component-annotations-2.1.0.jar:/Users/alex/.m2/repository/org/codehaus/plexus/plexus-interpolation/1.26/plexus-interpolation-1.26.jar:/Users/alex/.m2/repository/org/codehaus/plexus/plexus-sec-dispatcher/2.0/plexus-sec-dispatcher-2.0.jar:/Users/alex/.m2/repository/org/codehaus/plexus/plexus-utils/3.4.1/plexus-utils-3.4.1.jar:/Users/alex/.m2/repository/org/eclipse/jetty/jetty-client/9.4.44.v20210927/jetty-client-9.4.44.v20210927.jar:/Users/alex/.m2/repository/org/eclipse/jetty/jetty-http/9.4.44.v20210927/jetty-http-9.4.44.v20210927.jar:/Users/alex/.m2/repository/org/eclipse/jetty/jetty-io/9.4.44.v20210927/jetty-io-9.4.44.v20210927.jar:/Users/alex/.m2/repository/org/eclipse/jetty/jetty-util/9.4.44.v20210927/jetty-util-9.4.44.v20210927.jar:/Users/alex/.m2/repository/org/eclipse/sisu/org.eclipse.sisu.inject/0.3.5/org.eclipse.sisu.inject-0.3.5.jar:/Users/alex/.m2/repository/org/eclipse/sisu/org.eclipse.sisu.plexus/0.3.5/org.eclipse.sisu.plexus-0.3.5.jar:/Users/alex/.m2/repository/org/openjdk/jol/jol-core/0.16/jol-core-0.16.jar:/Users/alex/.m2/repository/org/ow2/asm/asm/9.5/asm-9.5.jar:/Users/alex/.m2/repository/org/slf4j/jcl-over-slf4j/1.7.30/jcl-over-slf4j-1.7.30.jar:/Users/alex/.m2/repository/org/slf4j/slf4j-api/1.7.32/slf4j-api-1.7.32.jar:/Users/alex/.m2/repository/potemkin/potemkin/0.4.5/potemkin-0.4.5.jar:/Users/alex/.m2/repository/riddley/riddley/0.1.12/riddley-0.1.12.jar:/Users/alex/.m2/repository/slingshot/slingshot/0.12.2/slingshot-0.12.2.jar:/Library/Java/JavaVirtualMachines/jdk-17.0.3+7/Contents/Home/lib/src.zip:/Users/alex/.m2/repository/com/google/inject/guice/4.2.2/guice-4.2.2-no_aop.jar:/Users/alex/.cache/mx.cider/enrich-classpath/1703/3446834096/2898174095.jar:/Users/alex/.cache/mx.cider/unzipped-jdk-sources/1703 -J--add-opens=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED -J--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED -e (load-file,(str,(System/getProperty,"user.home"),"/.clojure/user.clj"))'
it said it had an error at (
. if you drop the -e
stuff with the corfield comma i suspect it will work again?
I have a custom -e
command in one of the aliases, so I guess that's what breaks it. But it works fine when running clj in the shell
@U11BV7MTK Yes, it works without the -e form
the good thing is this is presumably easy to test. you can just put that in a file and then get its contents and pass it to eval. and keep playing with the quoting required
How do you get that -e
to be there in the first place? Is it some cider option that produces it?
enrich-classpath (a JVM program that produces a command dynamically) applies pr-str over most args, so the -e value should be escaped, I believe https://github.com/clojure-emacs/enrich-classpath/blob/b57f1659f3fed36e4f05f1a8fc5706eb0329efd8/tools.deps/src/cider/enrich_classpath/clojure.clj#L162
(I'll be adding some unit tests in the meantime)
I've just look at all CIDER custom variables that I have, and -e
is nowhere to be found. So it must be coming from deps.edn
.
:main-opts ["-e" "(load-file,(str,(System/getProperty,\"user.home\"),\"/.clojure/user.clj\"))"]
Probably I'll have a nice and tested fix today / tomorrow morning. Thanks for the report!
It's here! Merged https://github.com/clojure-emacs/cider/pull/3512 Expect the snapshots to be available within 1-2 hours.