summaryrefslogtreecommitdiff
path: root/cider-connection.el
diff options
context:
space:
mode:
authorVitalie Spinu <spinuvit@gmail.com>2018-08-29 19:59:24 +0200
committerBozhidar Batsov <bozhidar.batsov@gmail.com>2018-08-30 20:51:56 +0200
commit4dd1ff198231eb9f8decc70bee5031e2a2324287 (patch)
treee36a5b8599323b3be63228778684aca7279dbf3b /cider-connection.el
parent07dd778f8b94b63859d370484350e1f26f2aacf2 (diff)
[Fix #2413] Prompt if a session with the same parameters already exists
Diffstat (limited to 'cider-connection.el')
-rw-r--r--cider-connection.el19
1 files changed, 16 insertions, 3 deletions
diff --git a/cider-connection.el b/cider-connection.el
index f5b98fa7..959b78e5 100644
--- a/cider-connection.el
+++ b/cider-connection.el
@@ -92,6 +92,21 @@ PARAMS is a plist containing :host, :port, :server and other parameters for
"Ensure there is a linked CIDER session."
(sesman-ensure-session 'CIDER))
+(defun cider--session-server (session)
+ "Return server buffer for SESSION or nil if there is no server."
+ (seq-some (lambda (r)
+ (buffer-local-value 'nrepl-server-buffer r))
+ (cdr session)))
+
+(defun cider--gather-session-params (session)
+ "Gather all params for a SESSION."
+ (let (params)
+ (dolist (repl (cdr session))
+ (setq params (cider--gather-connect-params params repl)))
+ (when-let* ((server (cider--session-server session)))
+ (setq params (cider--gather-connect-params params server)))
+ params))
+
(defun cider--gather-connect-params (&optional params proc-buffer)
"Gather all relevant connection parameters into PARAMS plist.
PROC-BUFFER is either server or client buffer, defaults to current buffer."
@@ -443,9 +458,7 @@ Fallback on `cider' command."
(cl-defmethod sesman-restart-session ((_system (eql CIDER)) session)
(let* ((ses-name (car session))
(repls (cdr session))
- (srv-buf (seq-some (lambda (r)
- (buffer-local-value 'nrepl-server-buffer r))
- repls)))
+ (srv-buf (cider--session-server session)))
(if srv-buf
;; session with a server
(let ((s-params (cider--gather-connect-params nil srv-buf)))