[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Toggle internal buffers in Buffer Menu
From: |
Alain Schneble |
Subject: |
Toggle internal buffers in Buffer Menu |
Date: |
Sat, 20 Aug 2016 23:10:38 +0200 |
Hello
The following patch extends buffer menu (list-buffers) to allow toggling
display of internal buffers (bound to key "I" by default).
>From f5d754576126770efba226b2598727a36f7ad695 Mon Sep 17 00:00:00 2001
From: Alain Schneble <address@hidden>
Date: Sat, 20 Aug 2016 22:33:00 +0200
Subject: [PATCH] Add toggling of internal buffers to Buffer Menu
* lisp/buff-menu.el (Buffer-menu-include-internal-buffers): Add variable
to track state whether or not to display internal buffers.
(Buffer-menu-toggle-internal-buffers): Add function to toggle flag in
variable above and map prefix argument.
(Buffer-menu-toggle-files-only): Update doc string.
(list-buffers--refresh): Include new toggle flag in buffer filter
criteria.
(Buffer-menu-mode-map): Add new key binding (I to toggle display of
internal buffers).
---
lisp/buff-menu.el | 31 ++++++++++++++++++++++++++++---
1 file changed, 28 insertions(+), 3 deletions(-)
diff --git a/lisp/buff-menu.el b/lisp/buff-menu.el
index 4742628..3c72098 100644
--- a/lisp/buff-menu.el
+++ b/lisp/buff-menu.el
@@ -96,6 +96,11 @@ Buffer-menu-files-only
commands.")
(make-variable-buffer-local 'Buffer-menu-files-only)
+(defvar Buffer-menu-include-internal-buffers nil
+ "Non-nil if the current Buffer Menu lists internal buffers as well.
+This is set by `Buffer-menu-toggle-internal-buffers'.")
+(make-variable-buffer-local 'Buffer-menu-include-internal-buffers)
+
(defvar Info-current-file) ; from info.el
(defvar Info-current-node) ; from info.el
@@ -127,6 +132,7 @@ Buffer-menu-mode-map
(define-key map "b" 'Buffer-menu-bury)
(define-key map "V" 'Buffer-menu-view)
(define-key map "T" 'Buffer-menu-toggle-files-only)
+ (define-key map "I" 'Buffer-menu-toggle-internal-buffers)
(define-key map (kbd "M-s a C-s") 'Buffer-menu-isearch-buffers)
(define-key map (kbd "M-s a M-C-s") 'Buffer-menu-isearch-buffers-regexp)
(define-key map (kbd "M-s a C-o") 'Buffer-menu-multi-occur)
@@ -146,6 +152,10 @@ Buffer-menu-mode-map
'(menu-item "Show Only File Buffers" Buffer-menu-toggle-files-only
:button (:toggle . Buffer-menu-files-only)
:help "Toggle whether the current buffer-menu displays only
file buffers"))
+ (bindings--define-key menu-map [ti]
+ '(menu-item "Show Internal Buffers" Buffer-menu-toggle-internal-buffers
+ :button (:toggle . Buffer-menu-include-internal-buffers)
+ :help "Toggle whether the current buffer-menu displays
internal buffers as well."))
(bindings--define-key menu-map [s1] menu-bar-separator)
;; FIXME: The "Select" entries could use better names...
(bindings--define-key menu-map [sel]
@@ -306,7 +316,20 @@ Buffer-menu-toggle-files-only
((> (prefix-numeric-value arg) 0) t)))
(message (if Buffer-menu-files-only
"Showing only file-visiting buffers."
- "Showing all non-internal buffers."))
+ "Showing non file-visiting buffers."))
+ (revert-buffer))
+
+(defun Buffer-menu-toggle-internal-buffers (arg)
+ "Toggle whether the current buffer-menu displays internal buffers.
+With a positive ARG, display only non internal buffers. With zero or
+negative ARG, display internal buffers as well."
+ (interactive "P")
+ (setq Buffer-menu-include-internal-buffers
+ (cond ((not arg) (not Buffer-menu-include-internal-buffers))
+ ((<= (prefix-numeric-value arg) 0) t)))
+ (message (if Buffer-menu-include-internal-buffers
+ "Showing internal buffers."
+ "Showing only non-internal buffers."))
(revert-buffer))
(defalias 'Buffer-menu-sort 'tabulated-list-sort)
@@ -624,16 +647,18 @@ list-buffers--refresh
;; Collect info for each buffer we're interested in.
(let ((buffer-menu-buffer (current-buffer))
(show-non-file (not Buffer-menu-files-only))
+ (show-internal Buffer-menu-include-internal-buffers)
entries)
(dolist (buffer (or buffer-list
(buffer-list (if Buffer-menu-use-frame-buffer-list
(selected-frame)))))
(with-current-buffer buffer
(let* ((name (buffer-name))
- (file buffer-file-name))
+ (file buffer-file-name)
+ (internal (string= (substring name 0 1) " ")))
(when (and (buffer-live-p buffer)
(or buffer-list
- (and (not (string= (substring name 0 1) " "))
+ (and (or (not internal) show-internal)
(not (eq buffer buffer-menu-buffer))
(or file show-non-file))))
(push (list buffer
--
2.8.1.windows.1
Would you agree to include this feature? If so, I'll have a look at the
info. It might be worth to extend it and mention this functionality
somewhere.
Thanks,
Alain
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Toggle internal buffers in Buffer Menu,
Alain Schneble <=