Open mrrodriguez opened 1 month ago
I will give diagnostics here the same as I did before in https://github.com/clojure-emacs/cider/issues/3503#issuecomment-1751904188
Using:
(setq inhibit-message nil)
(setq nrepl-log-messages t)
M-x toggle-debug-on-error
Reproducing the issue from "Steps to reproduce the problem" in the PR description:
The (clj) `nrepl-messages buffer has no activity during this.
The (cljs) `nrepl-messages buffer has this:
(-->
id "14"
op "eval"
session "f4de252d-4117-4458-8e4f-cee4382a6dbd"
time-stamp "2024-07-23 15:34:39.181694000"
code "(in-ns 'vemv.fig-main)"
)
(<--
id "14"
session "f4de252d-4117-4458-8e4f-cee4382a6dbd"
time-stamp "2024-07-23 15:34:39.240514000"
ns "vemv.fig-main"
value "nil"
)
(<--
id "14"
session "f4de252d-4117-4458-8e4f-cee4382a6dbd"
time-stamp "2024-07-23 15:34:39.282608000"
status ("done")
)
(<--
id "14"
session "f4de252d-4117-4458-8e4f-cee4382a6dbd"
time-stamp "2024-07-23 15:34:39.283462000"
changed-namespaces (dict)
repl-type "cljs"
status ("state")
)
(-->
id "17"
op "eval"
session "f4de252d-4117-4458-8e4f-cee4382a6dbd"
time-stamp "2024-07-23 15:35:00.668720000"
code "(inc 1)"
column 16
file "*cider-repl dbg-cider/fig-main:localhost:53483(cljs:figwheel..."
line 2
nrepl.middleware.print/buffer-size 4096
nrepl.middleware.print/options (dict ...)
nrepl.middleware.print/print "cider.nrepl.pprint/pprint"
nrepl.middleware.print/quota 1048576
nrepl.middleware.print/stream? "1"
ns "vemv.fig-main"
)
(<--
id "17"
session "f4de252d-4117-4458-8e4f-cee4382a6dbd"
time-stamp "2024-07-23 15:35:00.709321000"
value "2"
)
(<--
id "17"
session "f4de252d-4117-4458-8e4f-cee4382a6dbd"
time-stamp "2024-07-23 15:35:00.710491000"
ns "cljs.user"
)
(<--
id "17"
session "f4de252d-4117-4458-8e4f-cee4382a6dbd"
time-stamp "2024-07-23 15:35:00.756109000"
status ("done")
)
(<--
id "17"
session "f4de252d-4117-4458-8e4f-cee4382a6dbd"
time-stamp "2024-07-23 15:35:00.774130000"
changed-namespaces (dict ...)
repl-type "cljs"
status ("state")
)
Note: It doesn't matter what form I eval, I always get the result of that expression and then the immediate changing of the ns back to cljs.user
.
Thanks!
I'll check it.
Might be a Figwheel-specific issue - nowadays we put far more attention to shadow-cljs, which is why a minimal repro over https://github.com/reducecombine/icd.scroll would be also useful.
Either ways, I'll try to repro the problem in both projects as time allows.
Thanks!
I'll check it.
Might be a Figwheel-specific issue - nowadays we put far more attention to shadow-cljs, which is why a minimal repro over https://github.com/reducecombine/icd.scroll would be also useful.
Either ways, I'll try to repro the problem in both projects as time allows.
My real problem case is in a figwheel-main project (the same as the last time I reported this same sort of issue in https://github.com/clojure-emacs/cider/issues/3503 ). I will try (tomorrow) to give some details for the shadow-cljs setup as well just to provide more information.
I ran the same experiment as above with the https://github.com/reducecombine/icd.scroll which notably uses jack-in with shadow-cljs
instead of figwheel-main
.
I do NOT observe this issue in the shadow-cljs
case. So it is looking to be specific to figwheel-main
somehow. ie. I can eval forms and remain in the same ns in the CLJS repl as I'd expect. I also understand that shadow is typically more popular than figwheel nowadays. I have repos using both and this is just a quite painful issue when trying to work in the figwheel projects (hard to use the repl when the ns is reset after every eval).
For completeness:
I will give diagnostics here the same as I did before in https://github.com/clojure-emacs/cider/issues/3503#issuecomment-1751904188
Using:
(setq inhibit-message nil)
(setq nrepl-log-messages t)
M-x toggle-debug-on-error
Reproducing the issue from "Steps to reproduce the problem" in the PR description:
The (clj) `nrepl-messages buffer has no activity during this.
The (cljs) `nrepl-messages buffer has this:
(-->
id "14"
op "eval"
session "639fafcc-1c16-4252-9075-5edc5bb08d4e"
time-stamp "2024-07-24 16:08:02.239691000"
code "(in-ns 'icd.scroll.app)"
)
(<--
id "14"
session "639fafcc-1c16-4252-9075-5edc5bb08d4e"
time-stamp "2024-07-24 16:08:02.290441000"
ns "icd.scroll.app"
value "nil"
)
(<--
id "14"
session "639fafcc-1c16-4252-9075-5edc5bb08d4e"
time-stamp "2024-07-24 16:08:02.340799000"
status ("done")
)
(<--
id "14"
session "639fafcc-1c16-4252-9075-5edc5bb08d4e"
time-stamp "2024-07-24 16:08:02.363098000"
changed-namespaces (dict)
repl-type "cljs"
status ("state")
)
(-->
id "16"
op "eval"
session "639fafcc-1c16-4252-9075-5edc5bb08d4e"
time-stamp "2024-07-24 16:09:06.938388000"
code "(inc 1)"
column 17
file "*cider-repl dbg-cider/icd.scroll:localhost:3333(cljs:shadow)..."
line 5
nrepl.middleware.print/buffer-size 4096
nrepl.middleware.print/options (dict ...)
nrepl.middleware.print/print "cider.nrepl.pprint/pprint"
nrepl.middleware.print/quota 1048576
nrepl.middleware.print/stream? "1"
ns "icd.scroll.app"
)
(<--
id "16"
session "639fafcc-1c16-4252-9075-5edc5bb08d4e"
time-stamp "2024-07-24 16:09:06.973878000"
value "2"
)
(<--
id "16"
session "639fafcc-1c16-4252-9075-5edc5bb08d4e"
time-stamp "2024-07-24 16:09:06.975791000"
ns "icd.scroll.app"
)
(<--
id "16"
session "639fafcc-1c16-4252-9075-5edc5bb08d4e"
time-stamp "2024-07-24 16:09:07.543333000"
status ("done")
)
(-->
id "17"
op "cider/get-state"
session "639fafcc-1c16-4252-9075-5edc5bb08d4e"
time-stamp "2024-07-24 16:09:07.544368000"
)
(<--
id "16"
session "639fafcc-1c16-4252-9075-5edc5bb08d4e"
time-stamp "2024-07-24 16:09:07.585111000"
changed-namespaces (dict)
repl-type "cljs"
status ("state")
)
(<--
id "17"
session "639fafcc-1c16-4252-9075-5edc5bb08d4e"
time-stamp "2024-07-24 16:09:07.625485000"
changed-namespaces (dict)
repl-type "cljs"
status ("state")
)
Hi Mike, awesome, I appreciate a lot the thorough effort.
Now it might be a matter of nailing down the issue to a specific Fig version.
Does it work correctly for you if you use the latest Fig version as of https://github.com/clojure-emacs/cider/issues/3503#issuecomment-1755481025?
I reckon the variables that you can play with are
From intuition, it should be a Fig thing, but let me know.
Hi Mike, awesome, I appreciate a lot the thorough effort.
Now it might be a matter of nailing down the issue to a specific Fig version.
Does it work correctly for you if you use the latest Fig version as of #3503 (comment)?
I reckon the variables that you can play with are
* Fig version * cider version * Lein version (some months ago misc plugins broke because of Lein changes)
From intuition, it should be a Fig thing, but let me know.
The example from https://github.com/reducecombine/fig-main uses [com.bhauman/figwheel-main "0.2.18"]
My problem I had in my real app was with that same version. This is the latest version too https://clojars.org/com.bhauman/figwheel-main
I don't suspect it is the cider version specifically since I had no changes to that when the problem begun to happen to me. I also had no change to figwheel-main version recently
What I did have change was: 1) emacs version (but only a minor version) from 29.1 to 29.4 2) lein version from 2.9.8 to 2.11.2 (latest)
At this point, perhaps it is looking like lein
could be the culprit. I'm having issues with 2.11.2 (the latest that I recently updated to).
What I think is relevant here though is that these are all nearly the "latest" version of each dependency involved - so I'd think this is the main case we'd expect to not be broken.
In case it helps, on a unixy box you can try the older Lein by downloading https://github.com/technomancy/leiningen/blob/2.9.8/bin/lein to somewhere in your path.
Normaly I do curl https://raw.githubusercontent.com/technomancy/leiningen/2.9.8/bin/lein > lein298
so that I can lein298 repl
without uninstalling other Leins.
I am observing the same problem again as reported and solved in https://github.com/clojure-emacs/cider/issues/3503 The only differences will be in the versions involved.
After initializing a cider clj & cljs repl via
cider-jack-in-clj&cljs
I expect that after performingcider-repl-set-ns
to change to some cljs namespace, the cljs repl buffer will remain in that namespace as I evaluate forms (unless it wasin-ns
or similar of course).I have not had this issue in any recent
cider
versions over the last 6 months or so with emacs 29.1. I was using a few versions of cider along the way after the fix inCIDER 1.8.0-snapshot
up until 1.15 I had no issues. The emacs upgrade alone (and maybelein
at the same time) is where I started to see this behavior come back again. I had this problem with 1.15 of cider so I tried 1.15.1 and I get the same behavior.Actual behavior
After using
cider-repl-set-ns
to change to a new cljs ns, the cljs repl correctly is set to that ns. I can then evaluate one time within the context of that namespace and get the eval output expected. However, the cljs repl then immediately returns to the last ns prior tocider-repl-set-ns
- typicallycljs.user
.Steps to reproduce the problem
Using this repo https://github.com/reducecombine/fig-main and running
npm install
there first. Then docider-jack-in-clj&cljs
in emacs.Go to the cljs repl buffer. use
cider-repl-set-ns
to change to the cljs nsvemv.fig-main
. Eval any form now, eg.1
, and the ns immmediately changes back to the prior ns, which iscljs.user
by default.The eval actually does work in the correct
vemv.fig-main
ns context, because doing something like(multiply 2 2)
correctly resolvesmultiply
and returns4
.Environment & Version information
Mac OS - Intel chip
CIDER version information
(I've tried with other Clojure versions and it doesn't matter).
Lein / Clojure CLI version
Leiningen 2.11.2
Emacs version
GNU Emacs 29.4 (build 1, x86_64-apple-darwin23.5.0, NS appkit-2487.60 Version 14.5 (Build 23F79)) of 2024-07-21
Spacemacs/emacs using
emacs-plus
thisOperating system
OS X 14.5 "Sonoma"
JDK distribution