diff --git a/CHANGELOG.md b/CHANGELOG.md index aeff6ca03..9c761d94b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ ### Changes - Bump the injected nREPL version to 1.0. +- [#3291](https://github.com/clojure-emacs/cider/pull/3291): **Remove** the `'cljs-pending` `repl-type`. It is replaced by `cider-repl-cljs-upgrade-pending`. ### Bugs fixed diff --git a/cider-connection.el b/cider-connection.el index c4f7a4d91..147199cbc 100644 --- a/cider-connection.el +++ b/cider-connection.el @@ -315,11 +315,11 @@ See `cider-connection-capabilities'." (_ '())) (when (or - (member cider-repl-type '(cljs pending-cljs)) + (eq cider-repl-type 'cljs) ;; This check is currently basically for nbb. ;; See `cider-sync-tooling-eval', but it is defined on a higher layer (nrepl-dict-get - (nrepl-sync-request:eval "cljs.core/demunge" (current-buffer) (cider-current-ns) 'tooling) + (nrepl-sync-request:eval "cljs.core/demunge" (current-buffer) nil 'tooling) "value")) '(cljs)))))) @@ -762,10 +762,17 @@ Session name can be customized with `cider-session-name-template'." (defvar-local cider-repl-type nil "The type of this REPL buffer, usually either clj or cljs.") +(defvar-local cider-repl-cljs-upgrade-pending nil + "Is the cljs repl currently pending?") + (defun cider-repl-type (repl-buffer) "Get REPL-BUFFER's type." (buffer-local-value 'cider-repl-type repl-buffer)) +(defun cider-cljs-pending-p (repl-buffer) + "Returns non nil when REPL-BUFFER is currently a pending cljs repl." + (buffer-local-value 'cider-repl-cljs-upgrade-pending repl-buffer)) + (defun cider-repl-type-for-buffer (&optional buffer) "Return the matching connection type (clj or cljs) for BUFFER. BUFFER defaults to the `current-buffer'. In cljc buffers return @@ -812,13 +819,13 @@ PARAMS is a plist as received by `cider-repl-create'." (let* ((proj-dir (plist-get params :project-dir)) (host (plist-get params :host)) (port (plist-get params :port)) - (cljsp (member (plist-get params :repl-type) '(cljs pending-cljs))) + (cljsp (member (plist-get params :repl-type) '(cljs))) (scored-repls (delq nil (mapcar (lambda (b) (let ((bparams (cider--gather-connect-params nil b))) (when (eq cljsp (member (plist-get bparams :repl-type) - '(cljs pending-cljs))) + '(cljs))) (cons (buffer-name b) (+ (if (equal proj-dir (plist-get bparams :project-dir)) 8 0) @@ -866,8 +873,9 @@ function with the repl buffer set as current." mode-name nil cider-session-name ses-name nrepl-project-dir (plist-get params :project-dir) - ;; REPLs start with clj and then "upgrade" to a different type + ;; Cljs repls are pending until they are upgraded. See cider-repl--state-handler cider-repl-type (plist-get params :repl-type) + cider-repl-cljs-upgrade-pending (plist-get params :cider-repl-cljs-upgrade-pending) ;; ran at the end of cider--connected-handler cider-repl-init-function (plist-get params :repl-init-function) cider-launch-params params) @@ -985,7 +993,9 @@ throw an error if no linked session exists." (sesman-ensure-session 'CIDER) (sesman-current-session 'CIDER))))))) (or (seq-filter (lambda (b) - (cider--match-repl-type type b)) + (unless + (cider-cljs-pending-p b) + (cider--match-repl-type type b))) repls) (when ensure (cider--no-repls-user-error type))))) diff --git a/cider-repl.el b/cider-repl.el index 80f47ec04..1ab3898cc 100644 --- a/cider-repl.el +++ b/cider-repl.el @@ -224,6 +224,8 @@ This cache is stored in the connection buffer.") (nrepl-dbind-response response (repl-type changed-namespaces) (when (and repl-type cider-repl-auto-detect-type) (cider-set-repl-type repl-type)) + (when (eq (cider-maybe-intern repl-type) 'cljs) + (setq cider-repl-cljs-upgrade-pending nil)) (unless (nrepl-dict-empty-p changed-namespaces) (setq cider-repl-ns-cache (nrepl-dict-merge cider-repl-ns-cache changed-namespaces)) (dolist (b (buffer-list)) diff --git a/cider.el b/cider.el index 5031096f7..dc44e1cfc 100644 --- a/cider.el +++ b/cider.el @@ -1258,7 +1258,8 @@ server buffer, in which case a new session for that server is created." (cider--update-cljs-type) (cider--update-cljs-init-function) (plist-put :session-name ses-name) - (plist-put :repl-type 'pending-cljs))))) + (plist-put :repl-type 'cljs) + (plist-put :cider-repl-cljs-upgrade-pending t))))) ;;;###autoload (defun cider-connect-clj (&optional params) @@ -1292,7 +1293,8 @@ parameters regardless of their supplied or default values." (cider--update-cljs-type) (cider--update-cljs-init-function) (plist-put :session-name nil) - (plist-put :repl-type 'pending-cljs)))) + (plist-put :repl-type 'cljs) + (plist-put :cider-repl-cljs-upgrade-pending t)))) ;;;###autoload (defun cider-connect-clj&cljs (params &optional soft-cljs-start)