changeset 58299:40fc4ca7acc0

(list-buffers-noselect): Massage to fit in 80 columns. Replace mapcar->dolist, format->string.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Wed, 17 Nov 2004 17:12:57 +0000
parents 064c1eb5f5ae
children 7b70b40dbfc7
files lisp/buff-menu.el
diffstat 1 files changed, 46 insertions(+), 42 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/buff-menu.el	Wed Nov 17 12:05:26 2004 +0000
+++ b/lisp/buff-menu.el	Wed Nov 17 17:12:57 2004 +0000
@@ -1,7 +1,7 @@
 ;;; buff-menu.el --- buffer menu main function and support functions
 
-;; Copyright (C) 1985, 86, 87, 93, 94, 95, 2000, 2001, 2002, 03, 2004
-;;   Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 2000, 2001, 2002, 2003,
+;;   2004  Free Software Foundation, Inc.
 
 ;; Maintainer: FSF
 ;; Keywords: convenience
@@ -652,7 +652,7 @@
 			 "  "
 			 (Buffer-menu-make-sort-button "Mode" 4) mode-end
 			 (Buffer-menu-make-sort-button "File" 5) "\n"))
-	 list desired-point name mode file)
+	 list desired-point)
     (when Buffer-menu-use-header-line
       (let ((pos 0))
 	;; Turn spaces in the header into stretch specs so they work
@@ -672,44 +672,48 @@
 	(insert (Buffer-menu-buffer+size "------" "----"))
 	(insert "  ----" mode-end "----\n")
 	(put-text-property 1 (point) 'intangible t))
-      (setq 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)))))
+      (if buffer-list
+	  (setq list buffer-list)
+	;; Collect info for every buffer we're interested in.
+	(dolist (buffer (buffer-list))
+	  (with-current-buffer buffer
+	    (let ((name (buffer-name))
+		  (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
+		(let ((mode (concat (format-mode-line mode-name nil nil buffer)
+				    (if mode-line-process
+					(format-mode-line mode-line-process
+							  nil nil buffer))))
+		      (bits (string
+			     (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) ?* ?\ )
+			     ;; Space separator.
+			     ?\ )))
+		  (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)))
+		  (push (list buffer bits name (buffer-size) mode file)
+			list)))))))
+	;; Preserve the original buffer-list ordering, just in case.
+	(setq list (nreverse list)))
+      ;; Place the buffers's info in the output buffer, sorted if necessary.
       (dolist (buffer
 	       (if Buffer-menu-sort-column
 		   (sort list
@@ -754,5 +758,5 @@
       (set-buffer-modified-p nil)
       (current-buffer))))
 
-;;; arch-tag: e7dfcfc9-6cb2-46e4-bf55-8ef1936d83c6
+;; arch-tag: e7dfcfc9-6cb2-46e4-bf55-8ef1936d83c6
 ;;; buff-menu.el ends here