From 1709b19535d64fa38fec514ea84afab7146fef20 Mon Sep 17 00:00:00 2001 From: Oleksandr Yakushev Date: Thu, 29 May 2025 12:38:43 +0300 Subject: [PATCH 1/3] Reduce number of places where versions need to be updated --- .../ROOT/pages/basics/middleware_setup.adoc | 2 +- .../ROOT/pages/basics/up_and_running.adoc | 2 +- test/cider-tests.el | 70 +++++++++++-------- 3 files changed, 43 insertions(+), 31 deletions(-) diff --git a/doc/modules/ROOT/pages/basics/middleware_setup.adoc b/doc/modules/ROOT/pages/basics/middleware_setup.adoc index 02bb3762d..1f4d606b0 100644 --- a/doc/modules/ROOT/pages/basics/middleware_setup.adoc +++ b/doc/modules/ROOT/pages/basics/middleware_setup.adoc @@ -65,7 +65,7 @@ NOTE: Make sure you're using https://github.com/clojurephant/clojurephant[Clojur [source, groovy] ---- dependencies { - devImplementation 'nrepl:nrepl:0.9.0' + devImplementation 'nrepl:nrepl:1.3.1' devImplementation 'cider:cider-nrepl:0.55.7' } diff --git a/doc/modules/ROOT/pages/basics/up_and_running.adoc b/doc/modules/ROOT/pages/basics/up_and_running.adoc index 7f3e0dcad..d1c232227 100644 --- a/doc/modules/ROOT/pages/basics/up_and_running.adoc +++ b/doc/modules/ROOT/pages/basics/up_and_running.adoc @@ -450,7 +450,7 @@ The command tunnels as well the remote port 12345 to local machine on port 12345 ---- ssh -t -L 12345:localhost:12345 MY_REMOTE_SERVER \ devcontainer exec --workspace-folder /home/me/my-clj-code \ - "clojure -Sdeps '{:deps {nrepl/nrepl {:mvn/version \"0.8.3\"} cider/cider-nrepl {:mvn/version \"0.25.5\"}}}' -m nrepl.cmdline -p 12345 -b 0.0.0.0 --middleware '[\"cider.nrepl/cider-middleware\"]' " + "clojure -Sdeps '{:deps {nrepl/nrepl {:mvn/version \"1.3.1\"} cider/cider-nrepl {:mvn/version \"0.55.7\"}}}' -m nrepl.cmdline -p 12345 -b 0.0.0.0 --middleware '[\"cider.nrepl/cider-middleware\"]' " ---- For this to work, we need as well to configure `devcontainer.json` with a snippet that exposes port `12345` from the container to the (remote) host: diff --git a/test/cider-tests.el b/test/cider-tests.el index 44355ff71..05af81c42 100644 --- a/test/cider-tests.el +++ b/test/cider-tests.el @@ -143,8 +143,8 @@ (describe "when there is a single dependency" (before-each - (setq-local cider-injected-nrepl-version "0.9.0") - (setq-local cider-injected-middleware-version "0.55.7") + (setq-local cider-injected-nrepl-version "1.2.3") + (setq-local cider-injected-middleware-version "2.3.4") (setq-local cider-jack-in-nrepl-middlewares '("cider.nrepl/cider-middleware")) (setq-local cider-jack-in-dependencies-exclusions '()) (setq-local cider-enable-nrepl-jvmti-agent t)) @@ -152,9 +152,9 @@ (it "can inject dependencies in a lein project" (expect (cider-inject-jack-in-dependencies "" "repl :headless" 'lein) :to-equal (concat "update-in :dependencies conj " - (shell-quote-argument "[nrepl/nrepl \"0.9.0\"]") + (shell-quote-argument "[nrepl/nrepl \"1.2.3\"]") " -- update-in :plugins conj " - (shell-quote-argument "[cider/cider-nrepl \"0.55.7\"]") + (shell-quote-argument "[cider/cider-nrepl \"2.3.4\"]") " -- update-in :jvm-opts conj '\"-Djdk.attach.allowAttachSelf\"'" " -- repl :headless"))) @@ -163,9 +163,9 @@ (expect (cider-inject-jack-in-dependencies "" "repl :headless" 'lein) :to-equal (concat "update-in :dependencies conj " - (shell-quote-argument "[nrepl/nrepl \"0.9.0\" :exclusions [org.clojure/clojure]]") + (shell-quote-argument "[nrepl/nrepl \"1.2.3\" :exclusions [org.clojure/clojure]]") " -- update-in :plugins conj " - (shell-quote-argument "[cider/cider-nrepl \"0.55.7\"]") + (shell-quote-argument "[cider/cider-nrepl \"2.3.4\"]") " -- update-in :jvm-opts conj '\"-Djdk.attach.allowAttachSelf\"'" " -- repl :headless"))) @@ -173,9 +173,9 @@ (setq-local cider-jack-in-dependencies-exclusions '(("nrepl/nrepl" ("org.clojure/clojure" "foo.bar/baz")))) (expect (cider-inject-jack-in-dependencies "" "repl :headless" 'lein) :to-equal (concat "update-in :dependencies conj " - (shell-quote-argument "[nrepl/nrepl \"0.9.0\" :exclusions [org.clojure/clojure foo.bar/baz]]") + (shell-quote-argument "[nrepl/nrepl \"1.2.3\" :exclusions [org.clojure/clojure foo.bar/baz]]") " -- update-in :plugins conj " - (shell-quote-argument "[cider/cider-nrepl \"0.55.7\"]") + (shell-quote-argument "[cider/cider-nrepl \"2.3.4\"]") " -- update-in :jvm-opts conj '\"-Djdk.attach.allowAttachSelf\"'" " -- repl :headless"))) @@ -183,7 +183,7 @@ (expect (cider-inject-jack-in-dependencies "--no-daemon" ":clojureRepl" 'gradle) :to-equal (concat "--no-daemon " "-Pjdk.attach.allowAttachSelf " - (shell-quote-argument "-Pdev.clojurephant.jack-in.nrepl=nrepl:nrepl:0.9.0,cider:cider-nrepl:0.55.7") + (shell-quote-argument "-Pdev.clojurephant.jack-in.nrepl=nrepl:nrepl:1.2.3,cider:cider-nrepl:2.3.4") " :clojureRepl " (shell-quote-argument "--middleware=cider.nrepl/cider-middleware"))))) @@ -196,11 +196,11 @@ (it "can inject dependencies in a lein project" (expect (cider-inject-jack-in-dependencies "" "repl :headless" 'lein) :to-equal (concat "update-in :dependencies conj " - (shell-quote-argument "[nrepl/nrepl \"0.9.0\"]") + (shell-quote-argument "[nrepl/nrepl \"1.2.3\"]") " -- update-in :plugins conj " (shell-quote-argument "[refactor-nrepl \"2.0.0\"]") " -- update-in :plugins conj " - (shell-quote-argument "[cider/cider-nrepl \"0.55.7\"]") + (shell-quote-argument "[cider/cider-nrepl \"2.3.4\"]") " -- update-in :jvm-opts conj '\"-Djdk.attach.allowAttachSelf\"'" " -- repl :headless")))) @@ -214,16 +214,16 @@ (it "can concat in a lein project" (expect (cider-inject-jack-in-dependencies "-o -U" "repl :headless" 'lein) :to-equal (concat "-o -U update-in :dependencies conj " - (shell-quote-argument "[nrepl/nrepl \"0.9.0\"]") + (shell-quote-argument "[nrepl/nrepl \"1.2.3\"]") " -- update-in :plugins conj " - (shell-quote-argument "[cider/cider-nrepl \"0.55.7\"]") + (shell-quote-argument "[cider/cider-nrepl \"2.3.4\"]") " -- update-in :jvm-opts conj '\"-Djdk.attach.allowAttachSelf\"'" " -- repl :headless"))) (it "can concat in a gradle project" (expect (cider-inject-jack-in-dependencies "--no-daemon" ":clojureRepl" 'gradle) :to-equal (concat "--no-daemon " "-Pjdk.attach.allowAttachSelf " - (shell-quote-argument "-Pdev.clojurephant.jack-in.nrepl=nrepl:nrepl:0.9.0,cider:cider-nrepl:0.55.7") + (shell-quote-argument "-Pdev.clojurephant.jack-in.nrepl=nrepl:nrepl:1.2.3,cider:cider-nrepl:2.3.4") " :clojureRepl " (shell-quote-argument "--middleware=cider.nrepl/cider-middleware"))))) @@ -237,14 +237,14 @@ (setq-local cider-jack-in-nrepl-middlewares '(("refactor-nrepl.middleware/wrap-refactor" :predicate middlewares-predicate) "cider.nrepl/cider-middleware" ("another/middleware")))) (it "includes plugins whose predicates return true" (expect (cider-jack-in-normalized-lein-plugins) - :to-equal '(("refactor-nrepl" "2.0.0") ("cider/cider-nrepl" "0.55.7")))) + :to-equal '(("refactor-nrepl" "2.0.0") ("cider/cider-nrepl" "2.3.4")))) (it "includes middlewares whose predicates return true" (expect (cider-jack-in-normalized-nrepl-middlewares) :to-equal '("refactor-nrepl.middleware/wrap-refactor" "cider.nrepl/cider-middleware" "another/middleware"))) (it "ignores plugins whose predicates return false" (spy-on 'plugins-predicate :and-return-value nil) (expect (cider-jack-in-normalized-lein-plugins) - :to-equal '(("cider/cider-nrepl" "0.55.7"))) + :to-equal '(("cider/cider-nrepl" "2.3.4"))) (spy-on 'middlewares-predicate :and-return-value nil) (expect (cider-jack-in-normalized-nrepl-middlewares) :to-equal '("cider.nrepl/cider-middleware" "another/middleware"))) @@ -273,16 +273,16 @@ :and-return-value '("refactor-nrepl.middleware/wrap-refactor" "cider.nrepl/cider-middleware")) (spy-on 'cider-jack-in-normalized-lein-plugins :and-return-value '(("refactor-nrepl" "2.0.0") - ("cider/cider-nrepl" "0.55.7"))) + ("cider/cider-nrepl" "2.3.4"))) (setq-local cider-jack-in-dependencies-exclusions '())) (it "uses them in a lein project" (expect (cider-inject-jack-in-dependencies "" "repl :headless" 'lein) :to-equal (concat "update-in :dependencies conj " - (shell-quote-argument "[nrepl/nrepl \"0.9.0\"]") + (shell-quote-argument "[nrepl/nrepl \"1.2.3\"]") " -- update-in :plugins conj " (shell-quote-argument "[refactor-nrepl \"2.0.0\"]") " -- update-in :plugins conj " - (shell-quote-argument "[cider/cider-nrepl \"0.55.7\"]") + (shell-quote-argument "[cider/cider-nrepl \"2.3.4\"]") " -- update-in :jvm-opts conj '\"-Djdk.attach.allowAttachSelf\"'" " -- repl :headless"))))) @@ -370,8 +370,10 @@ (it "uses main opts in an alias to prevent other mains from winning" (setq-local cider-jack-in-dependencies nil) (setq-local cider-jack-in-nrepl-middlewares '("cider.nrepl/cider-middleware")) + (setq-local cider-injected-nrepl-version "1.2.3") + (setq-local cider-injected-middleware-version "2.3.4") (let ((expected (string-join `("clojure -Sdeps " - ,(shell-quote-argument "{:deps {nrepl/nrepl {:mvn/version \"0.9.0\"} cider/cider-nrepl {:mvn/version \"0.55.7\"}} :aliases {:cider/nrepl {:jvm-opts [\"-Djdk.attach.allowAttachSelf\"], :main-opts [\"-m\" \"nrepl.cmdline\" \"--middleware\" \"[cider.nrepl/cider-middleware]\"]}}}") + ,(shell-quote-argument "{:deps {nrepl/nrepl {:mvn/version \"1.2.3\"} cider/cider-nrepl {:mvn/version \"2.3.4\"}} :aliases {:cider/nrepl {:jvm-opts [\"-Djdk.attach.allowAttachSelf\"], :main-opts [\"-m\" \"nrepl.cmdline\" \"--middleware\" \"[cider.nrepl/cider-middleware]\"]}}}") " -M:cider/nrepl") ""))) (setq-local cider-allow-jack-in-without-project t) @@ -385,8 +387,10 @@ :to-equal expected))) (it "allows specifying custom aliases with `cider-clojure-cli-aliases`" + (setq-local cider-injected-nrepl-version "1.2.3") + (setq-local cider-injected-middleware-version "2.3.4") (let ((expected (string-join `("clojure -Sdeps " - ,(shell-quote-argument "{:deps {nrepl/nrepl {:mvn/version \"0.9.0\"} cider/cider-nrepl {:mvn/version \"0.55.7\"}} :aliases {:cider/nrepl {:jvm-opts [\"-Djdk.attach.allowAttachSelf\"], :main-opts [\"-m\" \"nrepl.cmdline\" \"--middleware\" \"[cider.nrepl/cider-middleware]\"]}}}") + ,(shell-quote-argument "{:deps {nrepl/nrepl {:mvn/version \"1.2.3\"} cider/cider-nrepl {:mvn/version \"2.3.4\"}} :aliases {:cider/nrepl {:jvm-opts [\"-Djdk.attach.allowAttachSelf\"], :main-opts [\"-m\" \"nrepl.cmdline\" \"--middleware\" \"[cider.nrepl/cider-middleware]\"]}}}") " -M:dev:test:cider/nrepl") ""))) (setq-local cider-jack-in-dependencies nil) @@ -402,22 +406,26 @@ (dolist (command '("clojure" "powershell")) (it (format "should remove duplicates, yielding the same result (for %S command invocation)" command) + (setq-local cider-injected-nrepl-version "1.2.3") + (setq-local cider-injected-middleware-version "2.3.4") ;; repeat the same test for PowerShell too (let ((expected (string-join `("-Sdeps " - ,(cider--shell-quote-argument "{:deps {cider/cider-nrepl {:mvn/version \"0.55.7\"} nrepl/nrepl {:mvn/version \"0.9.0\"}} :aliases {:cider/nrepl {:jvm-opts [\"-Djdk.attach.allowAttachSelf\"], :main-opts [\"-m\" \"nrepl.cmdline\" \"--middleware\" \"[cider.nrepl/cider-middleware]\"]}}}" + ,(cider--shell-quote-argument "{:deps {cider/cider-nrepl {:mvn/version \"2.3.4\"} nrepl/nrepl {:mvn/version \"1.2.3\"}} :aliases {:cider/nrepl {:jvm-opts [\"-Djdk.attach.allowAttachSelf\"], :main-opts [\"-m\" \"nrepl.cmdline\" \"--middleware\" \"[cider.nrepl/cider-middleware]\"]}}}" command) " -M:dev:test:cider/nrepl") ""))) - (expect (cider-clojure-cli-jack-in-dependencies nil nil '(("nrepl/nrepl" "0.9.0") - ("nrepl/nrepl" "0.9.0")) + (expect (cider-clojure-cli-jack-in-dependencies nil nil '(("nrepl/nrepl" "1.2.3") + ("nrepl/nrepl" "1.2.3")) command) :to-equal expected)))) (it "handles aliases correctly" + (setq-local cider-injected-nrepl-version "1.2.3") + (setq-local cider-injected-middleware-version "2.3.4") (let ((expected (string-join `("-Sdeps " - ,(shell-quote-argument "{:deps {cider/cider-nrepl {:mvn/version \"0.55.7\"} nrepl/nrepl {:mvn/version \"0.9.0\"}} :aliases {:cider/nrepl {:jvm-opts [\"-Djdk.attach.allowAttachSelf\"], :main-opts [\"-m\" \"nrepl.cmdline\" \"--middleware\" \"[cider.nrepl/cider-middleware]\"]}}}") + ,(shell-quote-argument "{:deps {cider/cider-nrepl {:mvn/version \"2.3.4\"} nrepl/nrepl {:mvn/version \"1.2.3\"}} :aliases {:cider/nrepl {:jvm-opts [\"-Djdk.attach.allowAttachSelf\"], :main-opts [\"-m\" \"nrepl.cmdline\" \"--middleware\" \"[cider.nrepl/cider-middleware]\"]}}}") " -M:test:cider/nrepl") "")) - (deps '(("nrepl/nrepl" "0.9.0")))) + (deps '(("nrepl/nrepl" "1.2.3")))) (let ((cider-clojure-cli-aliases ":test")) (expect (cider-clojure-cli-jack-in-dependencies nil nil deps) :to-equal expected)) @@ -441,19 +449,23 @@ (expect (cider-clojure-cli-jack-in-dependencies nil nil deps) :to-equal expected))))) (it "allows for global options" + (setq-local cider-injected-nrepl-version "1.2.3") + (setq-local cider-injected-middleware-version "2.3.4") (let ((expected (string-join `("-J-Xverify:none -Sdeps " - ,(shell-quote-argument "{:deps {cider/cider-nrepl {:mvn/version \"0.55.7\"} nrepl/nrepl {:mvn/version \"0.9.0\"}} :aliases {:cider/nrepl {:jvm-opts [\"-Djdk.attach.allowAttachSelf\"], :main-opts [\"-m\" \"nrepl.cmdline\" \"--middleware\" \"[cider.nrepl/cider-middleware]\"]}}}") + ,(shell-quote-argument "{:deps {cider/cider-nrepl {:mvn/version \"2.3.4\"} nrepl/nrepl {:mvn/version \"1.2.3\"}} :aliases {:cider/nrepl {:jvm-opts [\"-Djdk.attach.allowAttachSelf\"], :main-opts [\"-m\" \"nrepl.cmdline\" \"--middleware\" \"[cider.nrepl/cider-middleware]\"]}}}") " -M:test:cider/nrepl") "")) - (deps '(("nrepl/nrepl" "0.9.0")))) + (deps '(("nrepl/nrepl" "1.2.3")))) (let ((cider-clojure-cli-aliases ":test")) (expect (cider-clojure-cli-jack-in-dependencies "-J-Xverify:none" nil deps) :to-equal expected)))) (it "allows to specify git coordinate as cider-jack-in-dependency" + (setq-local cider-injected-nrepl-version "1.2.3") + (setq-local cider-injected-middleware-version "2.3.4") (setq-local cider-jack-in-dependencies '(("org.clojure/tools.deps" (("git/sha" . "6ae2b6f71773de7549d7f22759e8b09fec27f0d9") ("git/url" . "https://github.com/clojure/tools.deps/"))))) (let ((expected (string-join `("clojure -Sdeps " - ,(shell-quote-argument "{:deps {nrepl/nrepl {:mvn/version \"0.9.0\"} cider/cider-nrepl {:mvn/version \"0.55.7\"} org.clojure/tools.deps { :git/sha \"6ae2b6f71773de7549d7f22759e8b09fec27f0d9\" :git/url \"https://github.com/clojure/tools.deps/\" }} :aliases {:cider/nrepl {:jvm-opts [\"-Djdk.attach.allowAttachSelf\"], :main-opts [\"-m\" \"nrepl.cmdline\" \"--middleware\" \"[cider.nrepl/cider-middleware]\"]}}}") + ,(shell-quote-argument "{:deps {nrepl/nrepl {:mvn/version \"1.2.3\"} cider/cider-nrepl {:mvn/version \"2.3.4\"} org.clojure/tools.deps { :git/sha \"6ae2b6f71773de7549d7f22759e8b09fec27f0d9\" :git/url \"https://github.com/clojure/tools.deps/\" }} :aliases {:cider/nrepl {:jvm-opts [\"-Djdk.attach.allowAttachSelf\"], :main-opts [\"-m\" \"nrepl.cmdline\" \"--middleware\" \"[cider.nrepl/cider-middleware]\"]}}}") " -M:cider/nrepl") ""))) (setq-local cider-allow-jack-in-without-project t) From eab9f1b75e9ec5676e955f80bdbb790855bb50bf Mon Sep 17 00:00:00 2001 From: Oleksandr Yakushev Date: Thu, 29 May 2025 12:39:49 +0300 Subject: [PATCH 2/3] [inspector] Remove functions that don't bring value --- cider-inspector.el | 143 +++++++++------------------------------------ 1 file changed, 29 insertions(+), 114 deletions(-) diff --git a/cider-inspector.el b/cider-inspector.el index e8de3bf81..2a325eaca 100644 --- a/cider-inspector.el +++ b/cider-inspector.el @@ -244,18 +244,17 @@ In particular, it does not read `cider-sexp-at-point'." ns))) (defun cider-inspector-pop () - "Pop the last value off the inspector stack and render it. -See `cider-sync-request:inspect-pop' and `cider-inspector--render-value'." + "Pop the last value off the inspector stack and render it." (interactive) - (let ((result (cider-sync-request:inspect-pop))) + (let ((result (cider-nrepl-send-sync-request `("op" "inspect-pop")))) (when (nrepl-dict-get result "value") (cider-inspector--render-value result :pop)))) (defun cider-inspector-push (idx) - "Inspect the value at IDX in the inspector stack and render it. -See `cider-sync-request:inspect-push' and `cider-inspector--render-value'" + "Inspect the value at IDX in the inspector stack and render it." (interactive) - (let ((result (cider-sync-request:inspect-push idx))) + (let ((result (cider-nrepl-send-sync-request `("op" "inspect-push" + "idx" ,idx)))) (when (nrepl-dict-get result "value") (push (point) cider-inspector-location-stack) (cider-inspector--render-value result :next-inspectable)))) @@ -269,33 +268,29 @@ If EX-DATA is true, inspect ex-data of the exception instead." `("op" "inspect-last-exception" "index" ,index ,@(when ex-data - `("ex-data" "true"))) - (cider-current-repl)))) + `("ex-data" "true")))))) (when (nrepl-dict-get result "value") (setq cider-inspector-location-stack nil) (cider-inspector--render-value result :next-inspectable)))) (defun cider-inspector-previous-sibling () - "Inspect the previous sibling value within a sequential parent. -See `cider-sync-request:inspect-previous-sibling' and `cider-inspector--render-value'" + "Inspect the previous sibling value within a sequential parent." (interactive) - (let ((result (cider-sync-request:inspect-previous-sibling))) + (let ((result (cider-nrepl-send-sync-request `("op" "inspect-previous-sibling")))) (when (nrepl-dict-get result "value") (cider-inspector--render-value result)))) (defun cider-inspector-next-sibling () - "Inspect the next sibling value within a sequential parent. -See `cider-sync-request:inspect-next-sibling' and `cider-inspector--render-value'" + "Inspect the next sibling value within a sequential parent." (interactive) - (let ((result (cider-sync-request:inspect-next-sibling))) + (let ((result (cider-nrepl-send-sync-request `("op" "inspect-next-sibling")))) (when (nrepl-dict-get result "value") (cider-inspector--render-value result)))) (defun cider-inspector--refresh-with-opts (&rest opts) "Invokes `inspect-refresh' op with supplied extra OPTS. Re-renders the currently inspected value." - (let ((result (cider-nrepl-send-sync-request `("op" "inspect-refresh" ,@opts) - (cider-current-repl)))) + (let ((result (cider-nrepl-send-sync-request `("op" "inspect-refresh" ,@opts)))) (when (nrepl-dict-get result "value") (cider-inspector--render-value result)))) @@ -309,7 +304,7 @@ Re-renders the currently inspected value." Does nothing if already on the last page." (interactive) - (let ((result (cider-sync-request:inspect-next-page))) + (let ((result (cider-nrepl-send-sync-request '("op" "inspect-next-page")))) (when (nrepl-dict-get result "value") (cider-inspector--render-value result)))) @@ -318,7 +313,7 @@ Does nothing if already on the last page." Does nothing if already on the first page." (interactive) - (let ((result (cider-sync-request:inspect-prev-page))) + (let ((result (cider-nrepl-send-sync-request '("op" "inspect-prev-page")))) (when (nrepl-dict-get result "value") (cider-inspector--render-value result)))) @@ -352,25 +347,21 @@ MAX-NESTED-DEPTH is the new value." ;; Disable hint about analytics feature so that it is never displayed again. (when cider-inspector-display-analytics-hint (customize-set-variable 'cider-inspector-display-analytics-hint nil)) - (let ((result (cider-nrepl-send-sync-request `("op" "inspect-display-analytics") - (cider-current-repl)))) + (let ((result (cider-nrepl-send-sync-request `("op" "inspect-display-analytics")))) (when (nrepl-dict-get result "value") (cider-inspector--render-value result :next-inspectable)))) (defun cider-inspector-toggle-pretty-print () "Toggle the pretty printing of values in the inspector." (interactive) - (let ((result (cider-nrepl-send-sync-request - `("op" "inspect-toggle-pretty-print") - (cider-current-repl)))) + (let ((result (cider-nrepl-send-sync-request `("op" "inspect-toggle-pretty-print")))) (when (nrepl-dict-get result "value") (cider-inspector--render-value result)))) (defun cider-inspector-toggle-view-mode () "Toggle the view mode of the inspector between normal and object view mode." (interactive) - (let ((result (cider-nrepl-send-sync-request `("op" "inspect-toggle-view-mode") - (cider-current-repl)))) + (let ((result (cider-nrepl-send-sync-request `("op" "inspect-toggle-view-mode")))) (when (nrepl-dict-get result "value") (cider-inspector--render-value result :next-inspectable)))) @@ -402,7 +393,9 @@ current-namespace." (interactive (let ((ns (cider-current-ns))) (list (cider-inspector--read-var-name-from-user ns) ns))) - (when-let* ((result (cider-sync-request:inspect-def-current-val ns var-name))) + (when-let* ((result (cider-nrepl-send-sync-request `("op" "inspect-def-current-value" + "ns" ,ns + "var-name" ,var-name)))) (cider-inspector--render-value result) (message "Defined current inspector value as #'%s/%s" ns var-name))) @@ -415,13 +408,12 @@ current-namespace." (cider-nrepl-send-request `("op" "inspect-print-current-value" ,@(cider--nrepl-print-request-plist fill-column)) - (cider-popup-eval-handler buffer) - (cider-current-repl)))) + (cider-popup-eval-handler buffer)))) (defun cider-inspector-tap-current-val () "Sends the current Inspector current value to `tap>'." (interactive) - (let ((response (cider-sync-request:inspect-tap-current-val))) + (let ((response (cider-nrepl-send-sync-request '("op" "inspect-tap-current-value")))) (nrepl-dbind-response response (value err) (if value (message "Successfully tapped the current Inspector value") @@ -433,94 +425,17 @@ current-namespace." (seq-let (property value) (cider-inspector-property-at-point) (pcase property (`cider-value-idx - (let* ((idx value) - (response (cider-sync-request:inspect-tap-indexed idx))) - (nrepl-dbind-response response (value err) - (if value - (message "Successfully tapped the Inspector item at point") - (error "Could not tap the Inspector item at point: %s" err))))) + (cl-assert value) + (nrepl-dbind-response (cider-nrepl-send-sync-request `("op" "inspect-tap-indexed" + "idx" ,value)) + (value err) + (if value + (message "Successfully tapped the Inspector item at point") + (error "Could not tap the Inspector item at point: %s" err)))) (_ (error "No object at point"))))) ;; nREPL interactions -(defun cider-sync-request:inspect-pop () - "Move one level up in the inspector stack." - (cider-nrepl-send-sync-request `("op" "inspect-pop") - (cider-current-repl))) - -(defun cider-sync-request:inspect-push (idx) - "Inspect the inside value specified by IDX." - (cider-nrepl-send-sync-request `("op" "inspect-push" - "idx" ,idx) - (cider-current-repl))) - -(defun cider-sync-request:inspect-previous-sibling () - "Inspect the previous sibling value within a sequential parent." - (cider-nrepl-send-sync-request `("op" "inspect-previous-sibling") - (cider-current-repl))) - -(defun cider-sync-request:inspect-next-sibling () - "Inspect the next sibling value within a sequential parent." - (cider-nrepl-send-sync-request `("op" "inspect-next-sibling") - (cider-current-repl))) - -(defun cider-sync-request:inspect-next-page () - "Jump to the next page in paginated collection view." - (cider-nrepl-send-sync-request '("op" "inspect-next-page") - (cider-current-repl))) - -(defun cider-sync-request:inspect-prev-page () - "Jump to the previous page in paginated collection view." - (cider-nrepl-send-sync-request '("op" "inspect-prev-page") - (cider-current-repl))) - -(defun cider-sync-request:inspect-set-page-size (page-size) - "Set the page size in paginated view to PAGE-SIZE." - (declare (obsolete "use `inspect-refresh' op instead." "1.15.0")) - (cider-nrepl-send-sync-request `("op" "inspect-set-page-size" - "page-size" ,page-size) - (cider-current-repl))) - -(defun cider-sync-request:inspect-set-max-atom-length (max-length) - "Set the max length of nested atoms to MAX-LENGTH." - (declare (obsolete "use `inspect-refresh' op instead." "1.15.0")) - (cider-nrepl-send-sync-request `("op" "inspect-set-max-atom-length" - "max-atom-length" ,max-length) - (cider-current-repl))) - -(defun cider-sync-request:inspect-set-max-coll-size (max-size) - "Set the maximum number of nested collection members to display to MAX-SIZE." - (declare (obsolete "use `inspect-refresh' op instead." "1.15.0")) - (cider-nrepl-send-sync-request `("op" "inspect-set-max-coll-size" - "max-coll-size" ,max-size) - (cider-current-repl))) - -(defun cider-sync-request:inspect-set-max-nested-depth (max-nested-depth) - "Set the level of nesting to display before truncating to MAX-NESTED-DEPTH." - (declare (obsolete "use `inspect-refresh' op instead." "1.15.0")) - (cider-nrepl-send-sync-request `("op" "inspect-set-max-nested-depth" - "max-nested-depth" ,max-nested-depth) - (cider-current-repl))) - -(defun cider-sync-request:inspect-def-current-val (ns var-name) - "Defines a var with VAR-NAME in NS with the current inspector value." - (cider-nrepl-send-sync-request `("op" "inspect-def-current-value" - "ns" ,ns - "var-name" ,var-name) - (cider-current-repl))) - -(defun cider-sync-request:inspect-tap-current-val () - "Sends current inspector value to tap>." - (cider-nrepl-send-sync-request '("op" "inspect-tap-current-value") - (cider-current-repl))) - -(defun cider-sync-request:inspect-tap-indexed (idx) - "Sends current inspector sub-value to tap>, per IDX." - (cl-assert idx) - (cider-nrepl-send-sync-request `("op" "inspect-tap-indexed" - "idx" ,idx) - (cider-current-repl))) - (defun cider-sync-request:inspect-expr (expr ns) "Evaluate EXPR in context of NS and inspect its result. Set the page size in paginated view to PAGE-SIZE, maximum length of atomic @@ -541,7 +456,7 @@ MAX-COLL-SIZE if non nil." `("display-analytics-hint" "true")) ,@(when cider-inspector-pretty-print `("pretty-print" "true")))) - (cider-nrepl-send-sync-request (cider-current-repl)))) + (cider-nrepl-send-sync-request))) (declare-function cider-set-buffer-ns "cider-mode") From 6d98f4a98ef8d63b08f448310f868e383a80e72f Mon Sep 17 00:00:00 2001 From: Oleksandr Yakushev Date: Thu, 29 May 2025 12:45:07 +0300 Subject: [PATCH 3/3] Bump cider-nrepl to 0.56.0 --- CHANGELOG.md | 4 ++++ cider.el | 2 +- dev/docker-sample-project/project.clj | 2 +- dev/tramp-sample-project/project.clj | 2 +- doc/modules/ROOT/pages/basics/middleware_setup.adoc | 10 +++++----- doc/modules/ROOT/pages/basics/up_and_running.adoc | 6 +++--- doc/modules/ROOT/pages/cljs/shadow-cljs.adoc | 2 +- doc/modules/ROOT/pages/cljs/up_and_running.adoc | 2 +- 8 files changed, 17 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d5baae210..67199e887 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,10 @@ ### Changes +- Bump the injected `cider-nrepl` to [0.56.0](https://github.com/clojure-emacs/cider-nrepl/blob/master/CHANGELOG.md#0560-2025-05-29). + - [cider-nrepl#941](https://github.com/clojure-emacs/cider-nrepl/pull/941): Stop vendoring Fipp dependency. + - [cider-nrepl#943](https://github.com/clojure-emacs/cider-nrepl/pull/943): Reduce debugger insrumentation bytecode footprint. + - [orchard#342](https://github.com/clojure-emacs/orchard/pull/342): Inspector: add hexdump view mode. - [#3816](https://github.com/clojure-emacs/cider/issues/3816): **(Breaking)** Remove enrich-classpath support from cider-jack-in. - [#3817](https://github.com/clojure-emacs/cider/issues/3817): Enable `cider-download-java-sources` by default. diff --git a/cider.el b/cider.el index 52d645d4f..99ac28585 100644 --- a/cider.el +++ b/cider.el @@ -549,7 +549,7 @@ the artifact.") Used when `cider-jack-in-auto-inject-clojure' is set to `latest'.") -(defconst cider-required-middleware-version "0.55.7" +(defconst cider-required-middleware-version "0.56.0" "The CIDER nREPL version that's known to work properly with CIDER.") (defcustom cider-injected-middleware-version cider-required-middleware-version diff --git a/dev/docker-sample-project/project.clj b/dev/docker-sample-project/project.clj index 061d69987..c9bde05a4 100644 --- a/dev/docker-sample-project/project.clj +++ b/dev/docker-sample-project/project.clj @@ -2,4 +2,4 @@ :dependencies [[org.clojure/clojure "1.11.1"] [clj-http "3.12.3"]] :source-paths ["src"] - :plugins [[cider/cider-nrepl "0.55.7"]]) + :plugins [[cider/cider-nrepl "0.56.0"]]) diff --git a/dev/tramp-sample-project/project.clj b/dev/tramp-sample-project/project.clj index 8cef2c0d0..2033564ca 100644 --- a/dev/tramp-sample-project/project.clj +++ b/dev/tramp-sample-project/project.clj @@ -2,5 +2,5 @@ :dependencies [[org.clojure/clojure "1.11.1"] [clj-http "3.12.3"]] :source-paths ["src"] - :plugins [[cider/cider-nrepl "0.55.7"] + :plugins [[cider/cider-nrepl "0.56.0"] [refactor-nrepl "3.9.0"]]) diff --git a/doc/modules/ROOT/pages/basics/middleware_setup.adoc b/doc/modules/ROOT/pages/basics/middleware_setup.adoc index 1f4d606b0..7c2e00d74 100644 --- a/doc/modules/ROOT/pages/basics/middleware_setup.adoc +++ b/doc/modules/ROOT/pages/basics/middleware_setup.adoc @@ -20,14 +20,14 @@ Use the convenient plugin for defaults, either in your project's [source,clojure] ---- -:plugins [[cider/cider-nrepl "0.55.7"]] +:plugins [[cider/cider-nrepl "0.56.0"]] ---- A minimal `profiles.clj` for CIDER would be: [source,clojure] ---- -{:repl {:plugins [[cider/cider-nrepl "0.55.7"]]}} +{:repl {:plugins [[cider/cider-nrepl "0.56.0"]]}} ---- WARNING: Be careful not to place this in the `:user` profile, as this way CIDER's @@ -43,11 +43,11 @@ run `cider-connect` or `cider-connect-cljs`. [source,clojure] ---- - :cider-clj {:extra-deps {cider/cider-nrepl {:mvn/version "0.55.7"}} + :cider-clj {:extra-deps {cider/cider-nrepl {:mvn/version "0.56.0"}} :main-opts ["-m" "nrepl.cmdline" "--middleware" "[cider.nrepl/cider-middleware]"]} :cider-cljs {:extra-deps {org.clojure/clojurescript {:mvn/version "1.10.339"} - cider/cider-nrepl {:mvn/version "0.55.7"} + cider/cider-nrepl {:mvn/version "0.56.0"} cider/piggieback {:mvn/version "0.6.0"}} :main-opts ["-m" "nrepl.cmdline" "--middleware" "[cider.nrepl/cider-middleware,cider.piggieback/wrap-cljs-repl]"]} @@ -66,7 +66,7 @@ NOTE: Make sure you're using https://github.com/clojurephant/clojurephant[Clojur ---- dependencies { devImplementation 'nrepl:nrepl:1.3.1' - devImplementation 'cider:cider-nrepl:0.55.7' + devImplementation 'cider:cider-nrepl:0.56.0' } tasks.named('clojureRepl') { diff --git a/doc/modules/ROOT/pages/basics/up_and_running.adoc b/doc/modules/ROOT/pages/basics/up_and_running.adoc index d1c232227..7bb808f79 100644 --- a/doc/modules/ROOT/pages/basics/up_and_running.adoc +++ b/doc/modules/ROOT/pages/basics/up_and_running.adoc @@ -72,7 +72,7 @@ simple - CIDER passes the extra dependencies and nREPL configuration to your build tool in the command it runs to start the nREPL server. Here's how this looks for `tools.deps`: - $ clojure -Sdeps '{:deps {nrepl {:mvn/version "1.3.1"} cider/cider-nrepl {:mvn/version "0.55.7"}}}' -m nrepl.cmdline --middleware '["cider.nrepl/cider-middleware"]' + $ clojure -Sdeps '{:deps {nrepl {:mvn/version "1.3.1"} cider/cider-nrepl {:mvn/version "0.56.0"}}}' -m nrepl.cmdline --middleware '["cider.nrepl/cider-middleware"]' TIP: If you don't want `cider-jack-in` to inject dependencies automatically, set `cider-inject-dependencies-at-jack-in` to `nil`. Note that you'll have to setup @@ -332,7 +332,7 @@ It is also possible for plain `clj`, although the command is somewhat longer: [source,sh] ---- -$ clj -Sdeps '{:deps {cider/cider-nrepl {:mvn/version "0.55.7"}}}' -m nrepl.cmdline --middleware "[cider.nrepl/cider-middleware]" +$ clj -Sdeps '{:deps {cider/cider-nrepl {:mvn/version "0.56.0"}}}' -m nrepl.cmdline --middleware "[cider.nrepl/cider-middleware]" ---- Alternatively, you can start nREPL either manually or using the facilities @@ -450,7 +450,7 @@ The command tunnels as well the remote port 12345 to local machine on port 12345 ---- ssh -t -L 12345:localhost:12345 MY_REMOTE_SERVER \ devcontainer exec --workspace-folder /home/me/my-clj-code \ - "clojure -Sdeps '{:deps {nrepl/nrepl {:mvn/version \"1.3.1\"} cider/cider-nrepl {:mvn/version \"0.55.7\"}}}' -m nrepl.cmdline -p 12345 -b 0.0.0.0 --middleware '[\"cider.nrepl/cider-middleware\"]' " + "clojure -Sdeps '{:deps {nrepl/nrepl {:mvn/version \"1.3.1\"} cider/cider-nrepl {:mvn/version \"0.56.0\"}}}' -m nrepl.cmdline -p 12345 -b 0.0.0.0 --middleware '[\"cider.nrepl/cider-middleware\"]' " ---- For this to work, we need as well to configure `devcontainer.json` with a snippet that exposes port `12345` from the container to the (remote) host: diff --git a/doc/modules/ROOT/pages/cljs/shadow-cljs.adoc b/doc/modules/ROOT/pages/cljs/shadow-cljs.adoc index b3df64aad..9ebaae442 100644 --- a/doc/modules/ROOT/pages/cljs/shadow-cljs.adoc +++ b/doc/modules/ROOT/pages/cljs/shadow-cljs.adoc @@ -62,7 +62,7 @@ And connect to it with `cider-connect`. ...For that to work, `shadow-cljs.edn` contents like the following are assumed: ```clj - :dependencies [[cider/cider-nrepl "0.55.7"] ;; mandatory (unless it's inherited from deps.edn or otherwise present in the classpath of shadow-cljs's JVM process) + :dependencies [[cider/cider-nrepl "0.56.0"] ;; mandatory (unless it's inherited from deps.edn or otherwise present in the classpath of shadow-cljs's JVM process) [refactor-nrepl/refactor-nrepl "3.9.0"]] ;; refactor-nrepl is optional :nrepl {:middleware [cider.nrepl/cider-middleware ;; it's advisable to explicitly add this middleware. It's automatically added by shadow-cljs (if available in the classpath), unless `:nrepl {:cider false}` diff --git a/doc/modules/ROOT/pages/cljs/up_and_running.adoc b/doc/modules/ROOT/pages/cljs/up_and_running.adoc index e4bc2feb9..688420146 100644 --- a/doc/modules/ROOT/pages/cljs/up_and_running.adoc +++ b/doc/modules/ROOT/pages/cljs/up_and_running.adoc @@ -52,7 +52,7 @@ or in `build.gradle`: ---- dependencies { devImplementation 'nrepl:nrepl:1.3.1' - devImplementation 'cider:cider-nrepl:0.55.7' + devImplementation 'cider:cider-nrepl:0.56.0' devImplementation 'cider:cider-piggieback:0.5.3' }