@@ -408,34 +408,44 @@ Fallback on `cider' command."
408
408
(cider-close-ancillary-buffers)))
409
409
410
410
(cl-defmethod sesman-restart-session ((_system (eql CIDER)) session)
411
- (let* ((repls (cdr session))
412
- (s-buf (seq-some (lambda (r )
413
- (buffer-local-value 'nrepl-server-buffer r))
414
- repls))
415
- (s-params (cider--gather-connect-params nil s-buf))
416
- (ses-name (car session)))
417
- ; ; 1) kill all connections, but keep the buffers
418
- (mapc (lambda (conn )
419
- (cider--close-connection conn 'no-kill ))
420
- repls)
421
- ; ; 2) kill the server
422
- (message " Waiting for CIDER server to quit... " )
423
- (nrepl-kill-server-buffer s-buf)
424
- ; ; 3) start server
425
- (nrepl-start-server-process
426
- (plist-get s-params :project-dir )
427
- (plist-get s-params :server-command )
428
- (lambda (server-buf )
429
- ; ; 4) restart the repls reusing the buffer
430
- (dolist (r repls)
431
- (cider-nrepl-connect
432
- (thread-first ()
433
- (cider--gather-connect-params r)
434
- ; ; server params (:port, :project-dir etc) have precedence
435
- (cider--gather-connect-params server-buf)
436
- (plist-put :session-name ses-name)
437
- (plist-put :repl-buffer r))))
438
- (message " Restarted CIDER %s session " ses-name)))))
411
+ (let* ((ses-name (car session))
412
+ (repls (cdr session))
413
+ (srv-buf (seq-some (lambda (r )
414
+ (buffer-local-value 'nrepl-server-buffer r))
415
+ repls)))
416
+ (if srv-buf
417
+ ; ; session with a server
418
+ (let ((s-params (cider--gather-connect-params nil srv-buf)))
419
+ ; ; 1) kill all connections, but keep the buffers
420
+ (mapc (lambda (conn )
421
+ (cider--close-connection conn 'no-kill ))
422
+ repls)
423
+ ; ; 2) kill the server
424
+ (nrepl-kill-server-buffer srv-buf)
425
+ ; ; 3) start server
426
+ (nrepl-start-server-process
427
+ (plist-get s-params :project-dir )
428
+ (plist-get s-params :server-command )
429
+ (lambda (server-buf )
430
+ ; ; 4) restart the repls reusing the buffer
431
+ (dolist (r repls)
432
+ (cider-nrepl-connect
433
+ (thread-first ()
434
+ (cider--gather-connect-params r)
435
+ ; ; server params (:port, :project-dir etc) have precedence
436
+ (cider--gather-connect-params server-buf)
437
+ (plist-put :session-name ses-name)
438
+ (plist-put :repl-buffer r))))
439
+ (sesman-browser-revert-all 'CIDER )
440
+ (message " Restarted CIDER %s session " ses-name))))
441
+ ; ; server-less session
442
+ (dolist (r repls)
443
+ (cider--close-connection r 'no-kill )
444
+ (cider-nrepl-connect
445
+ (thread-first ()
446
+ (cider--gather-connect-params r)
447
+ (plist-put :session-name ses-name)
448
+ (plist-put :repl-buffer r)))))))
439
449
440
450
(defun cider-format-connection-params (template params )
441
451
" Format PARAMS with TEMPLATE string.
@@ -552,6 +562,7 @@ Assume that the current buffer is a REPL."
552
562
(declare-function cider-repl-mode " cider-repl" )
553
563
(declare-function cider-repl--state-handler " cider-repl" )
554
564
(declare-function cider-repl-reset-markers " cider-repl" )
565
+ (defvar-local cider-session-name nil )
555
566
(defvar-local cider-repl-init-function nil )
556
567
(defun cider-repl-create (params )
557
568
" Create new repl buffer.
@@ -568,10 +579,8 @@ function with the repl buffer set as current."
568
579
(with-current-buffer buffer
569
580
(setq-local sesman-system 'CIDER )
570
581
(setq-local default-directory (or (plist-get params :project-dir ) default-directory))
571
- (let ((ses-name (or (plist-get params :session-name )
572
- (cider-make-session-name params))))
573
- ; ; creates a new session if session with ses-name doesn't already exist
574
- (sesman-add-object 'CIDER ses-name buffer 'allow-new ))
582
+ ; ; creates a new session if session with ses-name doesn't already exist
583
+ (sesman-add-object 'CIDER ses-name buffer 'allow-new )
575
584
(unless (derived-mode-p 'cider-repl-mode )
576
585
(cider-repl-mode))
577
586
(setq nrepl-err-handler #'cider-default-err-handler
0 commit comments