comparison lisp/buff-menu.el @ 54594:c07fb48cb0e2

(Buffer-menu-revert-function): Make it suitable for Auto Revert mode. (Buffer-menu-files-only): New variable. (Buffer-menu-toggle-files-only): New function. (Buffer-menu-mode-map): Bind it to `T'. (Buffer-menu-mode): Mention `T' in docstring. Set buffer-stale-function. (list-buffers-noselect): Mark buffer non-modified and set Buffer-menu-files-only.
author Luc Teirlinck <teirllm@auburn.edu>
date Sat, 27 Mar 2004 02:09:45 +0000
parents f9e5bd96c71c
children e30c06266ba0
comparison
equal deleted inserted replaced
54593:ab1f2de47b6b 54594:c07fb48cb0e2
96 96
97 (defconst Buffer-menu-buffer-column 4) 97 (defconst Buffer-menu-buffer-column 4)
98 98
99 (defvar Buffer-menu-mode-map nil 99 (defvar Buffer-menu-mode-map nil
100 "Local keymap for `Buffer-menu-mode' buffers.") 100 "Local keymap for `Buffer-menu-mode' buffers.")
101
102 (defvar Buffer-menu-files-only nil
103 "Non-nil if the current buffer-menu lists only file buffers.
104 This variable determines whether reverting the buffer lists only
105 file buffers. It affects both manual reverting and reverting by
106 Auto Revert Mode.")
107
108 (make-variable-buffer-local 'Buffer-menu-files-only)
101 109
102 (if Buffer-menu-mode-map 110 (if Buffer-menu-mode-map
103 () 111 ()
104 (setq Buffer-menu-mode-map (make-keymap)) 112 (setq Buffer-menu-mode-map (make-keymap))
105 (suppress-keymap Buffer-menu-mode-map t) 113 (suppress-keymap Buffer-menu-mode-map t)
129 (define-key Buffer-menu-mode-map "t" 'Buffer-menu-visit-tags-table) 137 (define-key Buffer-menu-mode-map "t" 'Buffer-menu-visit-tags-table)
130 (define-key Buffer-menu-mode-map "%" 'Buffer-menu-toggle-read-only) 138 (define-key Buffer-menu-mode-map "%" 'Buffer-menu-toggle-read-only)
131 (define-key Buffer-menu-mode-map "b" 'Buffer-menu-bury) 139 (define-key Buffer-menu-mode-map "b" 'Buffer-menu-bury)
132 (define-key Buffer-menu-mode-map "g" 'Buffer-menu-revert) 140 (define-key Buffer-menu-mode-map "g" 'Buffer-menu-revert)
133 (define-key Buffer-menu-mode-map "V" 'Buffer-menu-view) 141 (define-key Buffer-menu-mode-map "V" 'Buffer-menu-view)
142 (define-key Buffer-menu-mode-map "T" 'Buffer-menu-toggle-files-only)
134 (define-key Buffer-menu-mode-map [mouse-2] 'Buffer-menu-mouse-select) 143 (define-key Buffer-menu-mode-map [mouse-2] 'Buffer-menu-mouse-select)
135 ) 144 )
136 145
137 ;; Buffer Menu mode is suitable only for specially formatted data. 146 ;; Buffer Menu mode is suitable only for specially formatted data.
138 (put 'Buffer-menu-mode 'mode-class 'special) 147 (put 'Buffer-menu-mode 'mode-class 'special)
165 \\[Buffer-menu-unmark] -- remove all kinds of marks from current line. 174 \\[Buffer-menu-unmark] -- remove all kinds of marks from current line.
166 With prefix argument, also move up one line. 175 With prefix argument, also move up one line.
167 \\[Buffer-menu-backup-unmark] -- back up a line and remove marks. 176 \\[Buffer-menu-backup-unmark] -- back up a line and remove marks.
168 \\[Buffer-menu-toggle-read-only] -- toggle read-only status of buffer on this line. 177 \\[Buffer-menu-toggle-read-only] -- toggle read-only status of buffer on this line.
169 \\[Buffer-menu-revert] -- update the list of buffers. 178 \\[Buffer-menu-revert] -- update the list of buffers.
179 \\[Buffer-menu-toggle-files-only] -- toggle whether the menu displays only file buffers.
170 \\[Buffer-menu-bury] -- bury the buffer listed on this line." 180 \\[Buffer-menu-bury] -- bury the buffer listed on this line."
171 (kill-all-local-variables) 181 (kill-all-local-variables)
172 (use-local-map Buffer-menu-mode-map) 182 (use-local-map Buffer-menu-mode-map)
173 (setq major-mode 'Buffer-menu-mode) 183 (setq major-mode 'Buffer-menu-mode)
174 (setq mode-name "Buffer Menu") 184 (setq mode-name "Buffer Menu")
175 (make-local-variable 'revert-buffer-function) 185 (set (make-local-variable 'revert-buffer-function)
176 (setq revert-buffer-function 'Buffer-menu-revert-function) 186 'Buffer-menu-revert-function)
187 (set (make-local-variable 'buffer-stale-function)
188 #'(lambda (&optional noconfirm) t))
177 (setq truncate-lines t) 189 (setq truncate-lines t)
178 (setq buffer-read-only t) 190 (setq buffer-read-only t)
179 (run-hooks 'buffer-menu-mode-hook)) 191 (run-hooks 'buffer-menu-mode-hook))
180 192
181 (defun Buffer-menu-revert () 193 (defun Buffer-menu-revert ()
182 "Update the list of buffers." 194 "Update the list of buffers."
183 (interactive) 195 (interactive)
184 (revert-buffer)) 196 (revert-buffer))
185 197
186 (defun Buffer-menu-revert-function (ignore1 ignore2) 198 (defun Buffer-menu-revert-function (ignore1 ignore2)
187 (list-buffers)) 199 ;; We can not use save-excursion here. The buffer gets erased.
200 (let ((old-point (point)))
201 (list-buffers-noselect Buffer-menu-files-only)
202 (goto-char old-point)))
203
204 (defun Buffer-menu-toggle-files-only (arg)
205 "Toggle whether the current buffer-menu displays only file buffers.
206 With a positive ARG display only file buffers. With zero or
207 negative ARG, display other buffers as well."
208 (interactive "P")
209 (setq Buffer-menu-files-only
210 (cond ((not arg) (not Buffer-menu-files-only))
211 ((> (prefix-numeric-value arg) 0) t)))
212 (revert-buffer))
213
188 214
189 (defun Buffer-menu-buffer (error-if-non-existent-p) 215 (defun Buffer-menu-buffer (error-if-non-existent-p)
190 "Return buffer described by this line of buffer menu." 216 "Return buffer described by this line of buffer menu."
191 (let* ((where (save-excursion 217 (let* ((where (save-excursion
192 (beginning-of-line) 218 (beginning-of-line)
679 (setq header-line-format header)) 705 (setq header-line-format header))
680 ;; DESIRED-POINT doesn't have to be set; it is not when the 706 ;; DESIRED-POINT doesn't have to be set; it is not when the
681 ;; current buffer is not displayed for some reason. 707 ;; current buffer is not displayed for some reason.
682 (and desired-point 708 (and desired-point
683 (goto-char desired-point)) 709 (goto-char desired-point))
710 (setq Buffer-menu-files-only files-only)
711 (set-buffer-modified-p nil)
684 (current-buffer)))) 712 (current-buffer))))
685 713
686 ;;; arch-tag: e7dfcfc9-6cb2-46e4-bf55-8ef1936d83c6 714 ;;; arch-tag: e7dfcfc9-6cb2-46e4-bf55-8ef1936d83c6
687 ;;; buff-menu.el ends here 715 ;;; buff-menu.el ends here