summaryrefslogtreecommitdiff
path: root/lisp/buff-menu.el
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>2004-11-16 17:12:53 +0000
committerRichard M. Stallman <rms@gnu.org>2004-11-16 17:12:53 +0000
commit6161791395e8834471ba08350bae47782c193b86 (patch)
treebde37cb474fdb212687f442d71de84f43fda511d /lisp/buff-menu.el
parentc73dca2540ba5aad7efcf8a128fe23420b307159 (diff)
downloademacs-6161791395e8834471ba08350bae47782c193b86.tar.gz
(list-buffers-noselect): New arg BUFFER-LIST.
Diffstat (limited to 'lisp/buff-menu.el')
-rw-r--r--lisp/buff-menu.el78
1 files changed, 41 insertions, 37 deletions
diff --git a/lisp/buff-menu.el b/lisp/buff-menu.el
index e980055d422..6512e09213a 100644
--- a/lisp/buff-menu.el
+++ b/lisp/buff-menu.el
@@ -632,12 +632,15 @@ For more information, see the function `buffer-menu'."
(Buffer-menu-sort ,column))))
map)))
-(defun list-buffers-noselect (&optional files-only)
+(defun list-buffers-noselect (&optional files-only buffer-list)
"Create and return a buffer with a list of names of existing buffers.
The buffer is named `*Buffer List*'.
Note that buffers with names starting with spaces are omitted.
Non-null optional arg FILES-ONLY means mention only file buffers.
+If BUFFER-LIST is non-nil, it should be a list of buffers;
+it means list those buffers and no others.
+
For more information, see the function `buffer-menu'."
(let* ((old-buffer (current-buffer))
(standard-output standard-output)
@@ -670,42 +673,43 @@ For more information, see the function `buffer-menu'."
(insert " ----" mode-end "----\n")
(put-text-property 1 (point) 'intangible t))
(setq list
- (delq t
- (mapcar
- (lambda (buffer)
- (with-current-buffer buffer
- (setq name (buffer-name)
- mode (concat (format-mode-line mode-name nil nil buffer)
- (if mode-line-process
- (format-mode-line mode-line-process nil nil buffer)))
- file (buffer-file-name))
- (cond
- ;; Don't mention internal buffers.
- ((and (string= (substring name 0 1) " ") (null file)))
- ;; Maybe don't mention buffers without files.
- ((and files-only (not file)))
- ((string= name "*Buffer List*"))
- ;; Otherwise output info.
- (t
- (unless file
- ;; No visited file. Check local value of
- ;; list-buffers-directory.
- (when (and (boundp 'list-buffers-directory)
- list-buffers-directory)
- (setq file list-buffers-directory)))
- (list buffer
- (format "%c%c%c "
- (if (eq buffer old-buffer) ?. ? )
- ;; Handle readonly status. The output buffer is special
- ;; cased to appear readonly; it is actually made so at a
- ;; later date.
- (if (or (eq buffer standard-output)
- buffer-read-only)
- ?% ? )
- ;; Identify modified buffers.
- (if (buffer-modified-p) ?* ? ))
- name (buffer-size) mode file)))))
- (buffer-list))))
+ (or buffer-list
+ (delq t
+ (mapcar
+ (lambda (buffer)
+ (with-current-buffer buffer
+ (setq name (buffer-name)
+ mode (concat (format-mode-line mode-name nil nil buffer)
+ (if mode-line-process
+ (format-mode-line mode-line-process nil nil buffer)))
+ file (buffer-file-name))
+ (cond
+ ;; Don't mention internal buffers.
+ ((and (string= (substring name 0 1) " ") (null file)))
+ ;; Maybe don't mention buffers without files.
+ ((and files-only (not file)))
+ ((string= name "*Buffer List*"))
+ ;; Otherwise output info.
+ (t
+ (unless file
+ ;; No visited file. Check local value of
+ ;; list-buffers-directory.
+ (when (and (boundp 'list-buffers-directory)
+ list-buffers-directory)
+ (setq file list-buffers-directory)))
+ (list buffer
+ (format "%c%c%c "
+ (if (eq buffer old-buffer) ?. ? )
+ ;; Handle readonly status. The output buffer is special
+ ;; cased to appear readonly; it is actually made so at a
+ ;; later date.
+ (if (or (eq buffer standard-output)
+ buffer-read-only)
+ ?% ? )
+ ;; Identify modified buffers.
+ (if (buffer-modified-p) ?* ? ))
+ name (buffer-size) mode file)))))
+ (buffer-list)))))
(dolist (buffer
(if Buffer-menu-sort-column
(sort list