branch: externals/bufferlo
commit d7e94f611a8ba23001db738e3fd4ef1012bbb9d3
Author: shipmints <shipmi...@gmail.com>
Commit: shipmints <shipmi...@gmail.com>

    Refined buffer-live-p checks
    
    Found a case where calling bufferlo-kill-buffers tried to kill dead
    buffers.
---
 bufferlo.el | 38 ++++++++++++++++++++------------------
 1 file changed, 20 insertions(+), 18 deletions(-)

diff --git a/bufferlo.el b/bufferlo.el
index 71e9fe8f3e..e00a370d6b 100644
--- a/bufferlo.el
+++ b/bufferlo.el
@@ -1139,23 +1139,27 @@ Argument IGNORE is for compatibility with 
`tab-bar-tab-post-open-functions'."
 
 (defun bufferlo--current-buffers (frame)
   "Get the buffers of the current tab in FRAME."
-  (if bufferlo-include-buried-buffers
-      (append
-       (frame-parameter frame 'buffer-list)
-       (frame-parameter frame 'buried-buffer-list))
-    (frame-parameter frame 'buffer-list)))
+  (seq-filter
+   #'buffer-live-p
+   (if bufferlo-include-buried-buffers
+       (append
+        (frame-parameter frame 'buffer-list)
+        (frame-parameter frame 'buried-buffer-list))
+     (frame-parameter frame 'buffer-list))))
 
 (defun bufferlo--get-tab-buffers (tab)
   "Extract buffers from the given TAB structure."
-  (or
-   (if bufferlo-include-buried-buffers
-       (append
-        (cdr (assq 'wc-bl tab))
-        (cdr (assq 'wc-bbl tab)))
-     (cdr (assq 'wc-bl tab)))
-   ;; fallback to bufferlo-buffer-list, managed by bufferlo--window-state-*
-   (mapcar 'get-buffer
-           (car (cdr (assq 'bufferlo-buffer-list (assq 'ws tab)))))))
+  (seq-filter
+   #'buffer-live-p
+   (or
+    (if bufferlo-include-buried-buffers
+        (append
+         (cdr (assq 'wc-bl tab))
+         (cdr (assq 'wc-bbl tab)))
+      (cdr (assq 'wc-bl tab)))
+    ;; fallback to bufferlo-buffer-list, managed by bufferlo--window-state-*
+    (mapcar 'get-buffer
+            (car (cdr (assq 'bufferlo-buffer-list (assq 'ws tab))))))))
 
 (defun bufferlo--get-buffers (&optional frame tabnum)
   "Get the buffers of tab TABNUM in FRAME.
@@ -1184,13 +1188,11 @@ a tab index in the given frame.  If INCLUDE-HIDDEN is 
set, include hidden
 buffers, see `bufferlo-hidden-buffers'."
   (let ((list (bufferlo--get-buffers frame tabnum)))
     (if include-hidden
-        (seq-filter #'buffer-live-p list)
+        list
       (seq-filter (lambda (buffer)
                     (let ((hidden (bufferlo--merge-regexp-list
                                    (append '("a^") bufferlo-hidden-buffers))))
-                      (and
-                       (buffer-live-p buffer)
-                       (not (string-match-p hidden (buffer-name buffer))))))
+                      (not (string-match-p hidden (buffer-name buffer)))))
                   list))))
 
 (defun bufferlo--window-state-get (oldfn &optional window writable)

Reply via email to