[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