@@ -121,20 +121,12 @@ with `eca-process-wrapper-function' for a fully sandboxed setup."
121121
122122; ; Internal
123123
124- (defvar eca-workspaces-buffer-name " *eca-workspaces*" )
125-
126- (defun eca--emacs-errors-buffer-name (session )
127- " Return the Emacs errors buffer name for SESSION."
128- (format " <eca:emacs-errors[%s ]:%s > "
129- (eca--session-project-name session)
130- (eca--session-id session)))
131-
132124(defun eca--log-error (session err &optional context backtrace )
133125 " Log error ERR to the Emacs errors buffer for SESSION.
134126Optional CONTEXT is a string describing what was happening
135127when the error occurred. Optional BACKTRACE is a list of
136128frames captured via `backtrace-get-frames' ."
137- (let ((buffer (get-buffer-create (eca--emacs-errors- buffer-name session))))
129+ (let ((buffer (get-buffer-create (funcall eca-generate- buffer-name-function " eca:emacs-errors " :session session))))
138130 (with-current-buffer buffer
139131 (goto-char (point-max ))
140132 (insert (format " [%s ] %s%s \n "
@@ -150,7 +142,7 @@ frames captured via `backtrace-get-frames'."
150142
151143(defun eca-show-emacs-errors (session )
152144 " Open the Emacs errors buffer for SESSION."
153- (let ((buffer (get-buffer (eca--emacs-errors- buffer-name session))))
145+ (let ((buffer (get-buffer (funcall eca-generate- buffer-name-function " eca:emacs-errors " :session session))))
154146 (if buffer
155147 (with-current-buffer buffer
156148 (if (window-live-p (get-buffer-window (buffer-name )))
@@ -166,20 +158,19 @@ frames captured via `backtrace-get-frames'."
166158
167159(defun eca--emacs-errors-exit (session )
168160 " Clean up the Emacs errors buffer for SESSION on stop."
169- (let ((buffer (get-buffer (eca--emacs-errors- buffer-name session))))
161+ (let ((buffer (get-buffer (funcall eca-generate- buffer-name-function " eca:emacs-errors " :session session))))
170162 (when buffer
171163 (with-current-buffer buffer
172164 (rename-buffer (concat (buffer-name ) " :closed" ) t )
173- (setq-local mode-line-format '(" *Closed session*" ))
174- (when-let ((win (get-buffer-window (current-buffer ))))
175- (quit-window nil win))
176- ; ; Keep only the most recently closed errors buffer; kill older ones.
177- (let ((current (current-buffer )))
178- (dolist (b (buffer-list ))
179- (when (and (not (eq b current))
180- (or
181- (string-match-p " ^<eca:emacs-errors:.*>:closed$" (buffer-name b))
182- (string-match-p " ^<eca:emacs-errors:.*>$" (buffer-name b))))
165+ (setq-local eca-chat-closed t )
166+ (setq-local mode-line-format '(" *Closed session*" ))
167+ (when-let ((win (get-buffer-window (current-buffer ))))
168+ (quit-window nil win))
169+ ; ; Keep only the most recently closed errors buffer; kill older ones.
170+ (let ((current (current-buffer )))
171+ (dolist (b (buffer-list ))
172+ (when (and (not (eq b current))
173+ (buffer-local-value 'eca-chat-closed b))
183174 (kill-buffer b))))))))
184175
185176(defun eca--get-message-type (json-data )
@@ -364,7 +355,7 @@ backtrace. On older Emacs, runs BODY without capture."
364355 " Connect in eca nrepl port for development."
365356 (interactive )
366357 (eca-assert-session-running (eca-session))
367- (with-current-buffer (eca-process--stderr- buffer-name (eca-session))
358+ (with-current-buffer (funcall eca-generate- buffer-name-function " eca:stderr " :session (eca-session))
368359 (save-excursion
369360 (goto-char (point-min ))
370361 (when (re-search-forward " started on port \\ ([0-9]+\\ )" nil t )
@@ -466,13 +457,14 @@ When ARG is current prefix, ask for workspace roots to use."
466457 (seq-doseq (chat-by-id (eca--session-chats session))
467458 (when (buffer-live-p (cdr chat-by-id))
468459 (hierarchy-add-tree h (cdr chat-by-id) parent-fn))))
469- (let ((b (or (when-let ((b (get-buffer eca-workspaces-buffer-name)))
470- (when (buffer-live-p b)
471- (with-current-buffer b
472- (let ((inhibit-read-only t ))
473- (erase-buffer ))))
474- b)
475- (generate-new-buffer eca-workspaces-buffer-name))))
460+ (let* ((buffer-name (funcall eca-generate-buffer-name-function " eca-workspaces" ))
461+ (b (or (when-let ((b (get-buffer buffer-name)))
462+ (when (buffer-live-p b)
463+ (with-current-buffer b
464+ (let ((inhibit-read-only t ))
465+ (erase-buffer ))))
466+ b)
467+ (generate-new-buffer buffer-name))))
476468 (with-current-buffer b
477469 (setq-local tree-widget-image-enable nil )
478470 (widget-create (eca--tree-widget-open-all
0 commit comments