emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/cider 363b8e9eb2 10/15: Recompute namespace info on each f


From: ELPA Syncer
Subject: [nongnu] elpa/cider 363b8e9eb2 10/15: Recompute namespace info on each fighweel-main recompilation
Date: Fri, 18 Aug 2023 06:59:23 -0400 (EDT)

branch: elpa/cider
commit 363b8e9eb2dabde38d1241d929689a6533af65dd
Author: vemv <vemv@users.noreply.github.com>
Commit: vemv <vemv@users.noreply.github.com>

    Recompute namespace info on each fighweel-main recompilation
    
    Similar to https://github.com/clojure-emacs/cider/pull/3396, except that 
it's only necessary on recompilation - not on evaluations.
---
 CHANGELOG.md  |  2 ++
 cider-repl.el | 27 ++++++++++++++++++++++++---
 2 files changed, 26 insertions(+), 3 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 52f4482b20..2bcd9f6282 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -23,6 +23,8 @@
 - [#3112](https://github.com/clojure-emacs/cider/issues/3112): Fix the CIDER 
`xref-find-references` backend to return correct filenames.
 - [#3393](https://github.com/clojure-emacs/cider/issues/3393): recompute 
namespace info on each shadow-cljs recompilation or evaluation.
 - [#3402](https://github.com/clojure-emacs/cider/issues/3402): fix 
`cider-format-connection-params` edge case for Emacs 29.
+- [#3393](https://github.com/clojure-emacs/cider/issues/3393): Recompute 
namespace info on each shadow-cljs recompilation or evaluation.
+- Recompute namespace info on each fighweel-main recompilation.
 - Fix the `xref-find-definitions` CIDER backend to return correct filenames.
 - Fix the `cider-xref-fn-deps` buttons to direct to the right file.
 
diff --git a/cider-repl.el b/cider-repl.el
index d70b708c36..b083a08deb 100644
--- a/cider-repl.el
+++ b/cider-repl.el
@@ -986,6 +986,12 @@ t, as the content-type response is (currently) an 
alternative to the
 value response.  However for handlers which themselves issue subsequent
 nREPL ops, it may be convenient to prevent inserting a prompt.")
 
+(defun cider--maybe-get-state-cljs ()
+  "Invokes `cider/get-state' when it's possible to do so."
+  (when-let ((conn (cider-current-repl 'cljs)))
+    (when (nrepl-op-supported-p "cider/get-state" conn)
+      (nrepl-send-request '("op" "cider/get-state") nil conn))))
+
 (defun cider--maybe-get-state-for-shadow-cljs (buffer &optional err)
   "Refresh the changed namespaces metadata given BUFFER and ERR (stderr 
string).
 
@@ -1003,9 +1009,16 @@ This is particularly necessary for shadow-cljs because:
                (if err
                    (string-match-p "Build completed\\." err)
                  t))
-      (when-let ((conn (cider-current-repl 'cljs)))
-        (when (nrepl-op-supported-p "cider/get-state" conn)
-          (nrepl-send-request '("op" "cider/get-state") nil conn))))))
+      (cider--maybe-get-state-cljs))))
+
+(defun cider--maybe-get-state-for-figwheel-main (buffer out)
+  "Refresh the changed namespaces metadata given BUFFER and OUT (stdout 
string)."
+  (with-current-buffer buffer
+    (when (and (eq cider-repl-type 'cljs)
+               (eq cider-cljs-repl-type 'figwheel-main)
+               (not cider-repl-cljs-upgrade-pending)
+               (string-match-p "Successfully compiled build" out))
+      (cider--maybe-get-state-cljs))))
 
 (defun cider--shadow-cljs-handle-stderr (buffer err)
   "Refresh the changed namespaces metadata given BUFFER and ERR."
@@ -1015,6 +1028,12 @@ This is particularly necessary for shadow-cljs because:
   "Refresh the changed namespaces metadata given BUFFER."
   (cider--maybe-get-state-for-shadow-cljs buffer))
 
+(defvar cider--repl-stdout-functions (list 
#'cider--maybe-get-state-for-figwheel-main)
+  "Functions to be invoked each time new stdout is received on a repl buffer.
+
+Good for, for instance, monitoring specific strings that may be logged,
+and responding to them.")
+
 (defvar cider--repl-stderr-functions (list #'cider--shadow-cljs-handle-stderr)
   "Functions to be invoked each time new stderr is received on a repl buffer.
 
@@ -1032,6 +1051,8 @@ and responding to them.")
      (lambda (buffer value)
        (cider-repl-emit-result buffer value t))
      (lambda (buffer out)
+       (dolist (f cider--repl-stdout-functions)
+         (funcall f buffer out))
        (cider-repl-emit-stdout buffer out))
      (lambda (buffer err)
        (dolist (f cider--repl-stderr-functions)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]