This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2020-04-07
Channels
- # announcements (1)
- # babashka (77)
- # beginners (219)
- # chlorine-clover (6)
- # cider (52)
- # clj-kondo (14)
- # cljdoc (5)
- # clojure (173)
- # clojure-europe (49)
- # clojure-finland (1)
- # clojure-germany (2)
- # clojure-italy (1)
- # clojure-nl (39)
- # clojure-sweden (4)
- # clojure-uk (51)
- # clojurescript (25)
- # code-reviews (9)
- # conjure (25)
- # data-science (2)
- # figwheel-main (6)
- # fulcro (74)
- # graalvm (1)
- # graphql (11)
- # jobs-discuss (17)
- # keechma (4)
- # lein-figwheel (4)
- # leiningen (1)
- # luminus (10)
- # malli (14)
- # mid-cities-meetup (2)
- # off-topic (28)
- # re-frame (5)
- # reagent (76)
- # reitit (30)
- # ring (7)
- # ring-swagger (1)
- # shadow-cljs (163)
- # spacemacs (11)
- # specter (2)
- # sql (43)
- # tools-deps (13)
- # vim (6)
- # yada (1)
So far the workaround seems to do the job, but then again I could have sweared it also worked at first without the workaround
https://docs.cider.mx/cider/usage/misc_features.html#_reloading_code says: cider-ns-refresh wraps clojure.tools.namespace,
While https://github.com/clojure-emacs/cider/blob/f4eebe621231f088afb47cd93884444bfd1f0473/cider-ns.el#L192 says: does not rely on org.clojure/tools.namespace.
So I'm wondering - what's the exact relationship between cider and t.n?
For extra context, I reload code my own way (without cider's helpers), which works OK, but I need to understand how most emacsers do this
@vemv The fancier refresh command uses c.t.n., the basic reload command just does :reload
.
It really depends on what you need (and whether you’re working with Clojure or ClojureScript).
If I add this:
:plugins [[cider/cider-nrepl "0.25.0-SNAPSHOT"]]
to my project and do a lein repl
I keep getting errors like:
Unable to resolve var: cider.nrepl/wrap-apropos in this context
and warnings etc.I’ve tried with 0.24.0 and see the same - not even trying to connect cider
, just start the repl
I see only 2019 issues looking like this - so don’t seem to be still around - but do I need to add more dependencies?
Narrowed it down slightly:
I cannot find a way to start a cider-nrepl
loaded repl on a lein
plugin project
I get this sort of error each time. I’ve tried with cider-jack-in-clj
using latest cider
, but also I’ve tried starting the lein repl
myself with the cider-nrepl
(0.24.0 and 0.25.0-SNAPSHOT behave the same for me) explicitly given.
Where
[nREPL] Starting server via /usr/local/bin/lein update-in :dependencies conj \[nrepl\ \"0.7.0\"\] -- update-in :plugins conj \[cider/cider-nrepl\ \"0.25.0-SNAPSHOT\"\] -- repl :headless :host localhost
is what my version of cider-jack-in-clj
is doing
cider-version
= CIDER 0.25.0snapshot (package: 20200404.914)
and i see you tried bumping it but maybe check some lein deps :tree
and lein deps :plugin-tree
to see what nrepl version is actually resolved?
but wonder why this only happens when trying to start a repl with cider-repl middleware in a plugin
been a bit but i think that lein 2.8.3 is nrepl < 0.6 which would explain the failure on nrepl.middleware.print. Why that happens only as a plugin I haven't a clue, unless maybe as a proper dep it affects the dep version resolution better?
ie, if a proper dep it gets to override lein's nrepl version. as a plugin it doesn't?
so when you try to load a “plugin project” I guess it puts your current lein
version deps on the same classpath
so perhaps newer cider now requires newer nrepl - and I can’t have old lein
running things in these projects
because it means 2.8.3 lein is trying to share classpath with these newer cider deps and they clash on nrepl
this sounds plausible. I will tryin a few to bump my lein
version to see if it it clears it up
> ie, if a proper dep it gets to override lein’s nrepl version. as a plugin it doesn’t? yes, probably the issue indeed
@mikerod When using cider-jack-in
CIDER will override the nREPL bundled with Lein, but I think if you just use cider-nrepl
as a plugin you’ll end up using whatever nREPL is shipped with Lein.
So yes, the take away is that if you have :eval-in :leiningen
in your project.clj (it’s a plugin project), then your lein
version has to be compatible with cider
deps since they are all on same classpath
which was too far below the min threshold for recent cider middleware I’d think - so was getting the missing var stuff
@bozhidar thanks for your work on this stuff! its so important for the community at large
> i suppose a new one will come soon depending on nrepl 0.7.0 I’ve been planning to send a PR about this for a week now. I’ll do it soon.
I doubt there’ll be a new Lein release soon, as Phil just cut the latest one, so I’m taking my time. 🙂
Really beginner question here, but how do I send the entire code buffer to the REPL? My separate-window REPL throws errors about undefined symbols even after cider-load-buffer
, but evaluation inside the code buffer (with C-c C-c
, C-c C-e
for example) works fine. This works perfectly fine for me but makes the separate repl buffer kinda useless. For context, I'm on a fresh install of Doom Emacs using their packaged defaults; not sure if that's the issue. Couldn't find anything inside the documentation about a command like cider-load-buffer-in-repl
Sounds like namespace fundamentals. You evaluated a buffer that puts functions into a namespace. Then in the repl (by default in the user namespace) you reference a function defined in a different ns
@dpsutton Whoops, you're absolutely right, just assumed that the repl would ns to my current file for some reason, even though now I think about it it'd be kinda hard/not make sense across multiple buffers. Thanks a ton for the sanity check!
yeah. when you eval things in the buffer it looks to see that ns. you're in charge of the ns in your repl
Aha, found it! It's darn simple but it worked last time I tried: https://www.emacswiki.org/emacs/DataDebug
Nice! I threw together a usable (for me) setup:
(use-package emacs-lisp-mode
:ensure nil
:bind (("C-c M-i" . elisp-inspect))
:config
(defun elisp-inspect ()
(interactive)
(data-debug-eval-expression (elisp--preceding-sexp))))
Aha, found it! It's darn simple but it worked last time I tried: https://www.emacswiki.org/emacs/DataDebug