emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/detached 4aa219a660: Reuse detached shell buffers with


From: ELPA Syncer
Subject: [elpa] externals/detached 4aa219a660: Reuse detached shell buffers with <NUMBER> suffix
Date: Mon, 24 Oct 2022 11:57:32 -0400 (EDT)

branch: externals/detached
commit 4aa219a6600b5f37d8926496401f2b20d0b4900a
Author: Daniel Pettersson <daniel@dpettersson.net>
Commit: Niklas Eklund <niklas.eklund@posteo.net>

    Reuse detached shell buffers with <NUMBER> suffix
    
    Currently only the first shell command buffer "*Detached Shell
    Command*" is reused if `get-buffer-process` fails to get process.
    
    Buffers named "*Detached Shell Command*<NUMBER>" are handled
    differently and if "*Detached Shell Command*" is attached to a long
    running process. New *Detached Shell Command*<NUMBER> will fill up the
    buffer list.
    
    This is fixed by doing the same check process check for
    *Detached Shell Command*<NUMBER> buffers as well before creating a new
    buffer.
---
 detached.el | 22 +++++++++++++++++++---
 1 file changed, 19 insertions(+), 3 deletions(-)

diff --git a/detached.el b/detached.el
index 20439139f4..7d91058cb3 100644
--- a/detached.el
+++ b/detached.el
@@ -694,10 +694,10 @@ Optionally SUPPRESS-OUTPUT."
                   (or detached--current-session
                       (detached-create-session command)))
                  ((symbol-function #'set-process-sentinel) #'ignore)
-                 (buffer (get-buffer-create detached--shell-command-buffer))
+                 (buffer (detached--generate-buffer 
detached--shell-command-buffer
+                                                    (lambda (buffer)
+                                                      (not (get-buffer-process 
buffer)))))
                  (command (detached--shell-command detached--current-session 
t)))
-        (when (get-buffer-process buffer)
-          (setq buffer (generate-new-buffer (buffer-name buffer))))
         (setq detached-enabled nil)
         (funcall #'async-shell-command command buffer)
         (with-current-buffer buffer
@@ -1653,6 +1653,22 @@ If event is cased by an update to the `detached' 
database, re-initialize
                                     (seq-max)
                                     (min width)))))
 
+(defun detached--generate-buffer (name reuse-p &optional number)
+  "Reuse or generate new buffer like built-in function `generate-new-buffer'.
+NAME is used the same way as `generate-new-buffer' but if a buffer which
+REUSE-P for buffer returns nil, return buffer instead.
+
+NUMBER is used internally for recursive calls, but can be used to
+start searching at NUMBER offset."
+  (let* ((buffer-name (if number
+                          (format "%s<%d>" name number)
+                        name))
+         (buffer (get-buffer buffer-name))
+         (number (or number 1)))
+    (if (and buffer (not (funcall reuse-p buffer)))
+        (detached--generate-buffer name reuse-p (1+ number))
+      (get-buffer-create buffer-name))))
+
 (defun detached--metadata-git-branch ()
   "Return current git branch."
   (let ((args '("symbolic-ref" "HEAD" "--short")))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]