diff options
author | Vitalie Spinu <spinuvit@gmail.com> | 2018-08-29 19:59:24 +0200 |
---|---|---|
committer | Bozhidar Batsov <bozhidar.batsov@gmail.com> | 2018-08-30 20:51:56 +0200 |
commit | 4dd1ff198231eb9f8decc70bee5031e2a2324287 (patch) | |
tree | e36a5b8599323b3be63228778684aca7279dbf3b /cider-connection.el | |
parent | 07dd778f8b94b63859d370484350e1f26f2aacf2 (diff) |
[Fix #2413] Prompt if a session with the same parameters already exists
Diffstat (limited to 'cider-connection.el')
-rw-r--r-- | cider-connection.el | 19 |
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))) |