[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/bufferlo f6aa3d9fa8 1/4: Improve local buffer menu
From: |
ELPA Syncer |
Subject: |
[elpa] externals/bufferlo f6aa3d9fa8 1/4: Improve local buffer menu |
Date: |
Fri, 10 Nov 2023 18:57:28 -0500 (EST) |
branch: externals/bufferlo
commit f6aa3d9fa8476288f638e718c44d243fe507c2a0
Author: Florian Rommel <mail@florommel.de>
Commit: Florian Rommel <mail@florommel.de>
Improve local buffer menu
The function `bufferlo-list-buffers' now creates a distinct local
buffer menu for each frame/tab, similar to `bufferlo-ibuffer'.
---
README.org | 2 +-
bufferlo.el | 28 ++++++++++++++++++++++++++--
2 files changed, 27 insertions(+), 3 deletions(-)
diff --git a/README.org b/README.org
index 5bc56c691c..bc2f52f47f 100644
--- a/README.org
+++ b/README.org
@@ -56,7 +56,7 @@ respective global commands:
~ibuffer~ filtered for local buffers.
Alternatively, use "/ l" in ibuffer.
- ~bufferlo-list-buffers~:
- Display a list of local buffers in the "*Buffer List"* buffer.
+ Display a list of local buffers in a buffer-menu buffer.
Bufferlo provides functions to manage the local buffer lists:
- ~bufferlo-clear~:
diff --git a/bufferlo.el b/bufferlo.el
index 2886f6cabc..07c19ad949 100644
--- a/bufferlo.el
+++ b/bufferlo.el
@@ -516,11 +516,35 @@ If the prefix arument is given, include all buffers."
(lambda (b) (member (if (stringp b) b (car b)) lbs)))))))
(switch-to-buffer buffer norecord force-same-window))
+(defvar-local bufferlo--buffer-menu-this-frame nil)
+
+(defun bufferlo--local-buffer-list-this-frame ()
+ "Return the local buffer list of the buffer's frame."
+ (bufferlo-buffer-list bufferlo--buffer-menu-this-frame))
+
(defun bufferlo-list-buffers ()
- "Display a list of local buffers in the \"*Buffer List*\" buffer."
+ "Display a list of local buffers."
(interactive)
(display-buffer
- (list-buffers-noselect nil #'bufferlo-buffer-list)))
+ (let* ((old-buffer (current-buffer))
+ (name (or
+ (seq-find (lambda (b)
+ (string-match-p
+ "\\`\\*Local Buffer List\\*\\(<[0-9]*>\\)?\\'"
+ (buffer-name b)))
+ (bufferlo-buffer-list))
+ (generate-new-buffer-name "*Local 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--local-buffer-list-this-frame)
+ (setq Buffer-menu-filter-predicate nil)
+ (list-buffers--refresh #'bufferlo--local-buffer-list-this-frame
old-buffer)
+ (tabulated-list-print)
+ (revert-buffer))
+ buffer)))
(with-eval-after-load 'ibuf-ext
(define-ibuffer-filter bufferlo-local-buffers