Mercurial > emacs
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 |