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

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

[elpa] externals/bufferlo e66173b0a9 2/4: Add buffer menu and ibuffer fu


From: ELPA Syncer
Subject: [elpa] externals/bufferlo e66173b0a9 2/4: Add buffer menu and ibuffer functions for listing orphan buffers
Date: Sun, 19 Nov 2023 15:57:24 -0500 (EST)

branch: externals/bufferlo
commit e66173b0a9d5fae5cc5739b141539f81ca07f31c
Author: Florian Rommel <mail@florommel.de>
Commit: Florian Rommel <mail@florommel.de>

    Add buffer menu and ibuffer functions for listing orphan buffers
---
 README.org  |  8 ++++++++
 bufferlo.el | 36 ++++++++++++++++++++++++++++++++++--
 2 files changed, 42 insertions(+), 2 deletions(-)

diff --git a/README.org b/README.org
index c10e6d35f1..c802e7bd72 100644
--- a/README.org
+++ b/README.org
@@ -55,8 +55,16 @@ respective global commands:
 - ~bufferlo-ibuffer~:
   ~ibuffer~ filtered for local buffers.
   Alternatively, use "/ l" in ibuffer.
+- ~bufferlo-ibuffer-orphans~:
+  ~ibuffer~ filtered for orphan buffers.
+  Orphan buffers are buffers that are not in any frame/tab's local
+  buffer list.  Alternatively, use "/ L" in ibuffer.
 - ~bufferlo-list-buffers~:
   Display a list of local buffers in a buffer-menu buffer.
+- ~bufferlo-list-orphan-buffers~:
+  Display a list of orphan buffers in a buffer-menu buffer.
+  Orphan buffers are buffers that are not in any frame/tab's local
+  buffer list.
 
 Bufferlo provides functions to manage the local buffer lists:
 - ~bufferlo-clear~:
diff --git a/bufferlo.el b/bufferlo.el
index daa96dbf78..4791201d11 100644
--- a/bufferlo.el
+++ b/bufferlo.el
@@ -639,17 +639,41 @@ If the prefix arument is given, include all buffers."
        (revert-buffer))
      buffer)))
 
+(defun bufferlo-list-orphan-buffers ()
+  "Display a list of orphan buffers."
+  (interactive)
+  (display-buffer
+   (let* ((old-buffer (current-buffer))
+          (name "*Orphan Buffer List*")
+         (buffer (get-buffer-create name)))
+     (with-current-buffer buffer
+       (Buffer-menu-mode)
+       (setq bufferlo--buffer-menu-this-frame (selected-frame))
+       (setq Buffer-menu-files-only nil)
+       (setq Buffer-menu-buffer-list #'bufferlo--get-orphan-buffers)
+       (setq Buffer-menu-filter-predicate nil)
+       (list-buffers--refresh #'bufferlo--get-orphan-buffers old-buffer)
+       (tabulated-list-print)
+       (revert-buffer))
+     buffer)))
+
 (with-eval-after-load 'ibuf-ext
   (define-ibuffer-filter bufferlo-local-buffers
       "Limit current view to local buffers."
     (:description "local buffers" :reader nil)
-    (bufferlo-local-buffer-p buf)))
+    (bufferlo-local-buffer-p buf))
+  (define-ibuffer-filter bufferlo-orphan-buffers
+      "Limit current view to orphan buffers."
+    (:description "orphan buffers" :reader nil)
+    (not (memq buf (bufferlo--get-captured-buffers)))))
 
 (with-eval-after-load 'ibuffer
   (when bufferlo-ibuffer-bind-local-buffer-filter
     (require 'ibuf-ext)
     (define-key ibuffer--filter-map (kbd "l")
-                #'ibuffer-filter-by-bufferlo-local-buffers)))
+                #'ibuffer-filter-by-bufferlo-local-buffers)
+    (define-key ibuffer--filter-map (kbd "L")
+                #'ibuffer-filter-by-bufferlo-orphan-buffers)))
 
 (defun bufferlo-ibuffer (&optional other-window-p noselect shrink)
   "Invoke `ibuffer' filtered for local buffers.
@@ -666,6 +690,14 @@ The parameters OTHER-WINDOW-P NOSELECT SHRINK are passed 
to `ibuffer'."
     (ibuffer other-window-p name '((bufferlo-local-buffers . nil))
              noselect shrink)))
 
+(defun bufferlo-ibuffer-orphans (&optional other-window-p noselect shrink)
+  "Invoke `ibuffer' filtered for orphan buffers.
+The parameters OTHER-WINDOW-P NOSELECT SHRINK are passed to `ibuffer'."
+  (interactive)
+  (let ((name "*Bufferlo Orphans Ibuffer*"))
+    (ibuffer other-window-p name '((bufferlo-orphan-buffers . nil))
+             noselect shrink)))
+
 (provide 'bufferlo)
 
 ;;; bufferlo.el ends here



reply via email to

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