]> git.eshelyaron.com Git - emacs.git/commitdiff
* buff-menu.el (list-buffers-noselect): Use `dolist' instead of
authorSam Steingold <sds@gnu.org>
Wed, 16 Aug 2000 14:33:21 +0000 (14:33 +0000)
committerSam Steingold <sds@gnu.org>
Wed, 16 Aug 2000 14:33:21 +0000 (14:33 +0000)
`while'; use `with-current-buffer' instead of `save-excursion'.
Removed unnecessary kludges now that "*Buffer List*" is excluded.

lisp/ChangeLog
lisp/buff-menu.el

index e6c2423b900fe769f34f08c5eefc40775786d4b3..f7a25e44de371ae32c26738e7586d6ce90bb913e 100644 (file)
@@ -1,3 +1,9 @@
+2000-08-16  Sam Steingold  <sds@gnu.org>
+
+       * buff-menu.el (list-buffers-noselect): Use `dolist' instead of
+       `while'; use `with-current-buffer' instead of `save-excursion'.
+       Removed unnecessary kludges now that "*Buffer List*" is excluded.
+
 2000-08-16  Kenichi Handa  <handa@etl.go.jp>
 
        * international/ccl.el (declare-ccl-program): Docstring modified.
@@ -17,7 +23,7 @@
        (Buffer-menu-execute): When deleting, test `(and buf (buffer-name
        buf))', instead of `(Buffer-menu-buffer nil)', to see if buffer
        wasn't killed.
-       
+
        * buff-menu.el (list-buffers-noselect): Don't display the
        *Buffer List* buffer.
 
@@ -25,7 +31,7 @@
        `Loading jit-lock' message.
 
        * emacs-lisp/cust-print.el, emacs-lisp/cl-specs.el
-       * emacs-lisp/edebug.el, progmodes/hideif.el: Change authors' 
+       * emacs-lisp/edebug.el, progmodes/hideif.el: Change authors'
        mail address.
 
 2000-08-15  Miles Bader  <miles@gnu.org>
        * paren.el (show-paren-priority): New user option.
        (show-paren-function): Set overlay priorities to
        show-paren-priority.
-       
+
 2000-08-14  Miles Bader  <miles@gnu.org>
 
        * comint.el (comint-bol): Use `forward-line 0' instead of calling
 
        * xml.el (xml-parse-tag, xml-parse-attlist): Do not downcase
         identifiers, since XML is case sensitive
-       
+
 2000-08-12  Miles Bader  <miles@gnu.org>
-       
+
        * comint.el (comint-output-filter): Don't bother frobbing
        window-start, it doesn't seem to be necessary.
 
index c84ed105d9be7c5fb3d4e3c5446e144268b9d18a..02036891cda8b95b5e173b3dedacbad2c844ff02 100644 (file)
@@ -44,7 +44,7 @@
 ;; Based on FSF code dating back to 1985.
 
 ;;; Code:
+
 ;;;Trying to preserve the old window configuration works well in
 ;;;simple scenarios, when you enter the buffer menu, use it, and exit it.
 ;;;But it does strange things when you switch back to the buffer list buffer
@@ -322,7 +322,7 @@ This command deletes and replaces all the previously existing windows
 in the selected frame."
   (interactive)
   (let ((buff (Buffer-menu-buffer t))
-       (menu (current-buffer))       
+       (menu (current-buffer))
        (others ())
        tem)
     (goto-char (point-min))
@@ -494,87 +494,75 @@ The R column contains a % for buffers that are read-only."
 ")
       ;; Record the column where buffer names start.
       (setq Buffer-menu-buffer-column 4)
-      (let ((bl (buffer-list)))
-       (while bl
-         (let* ((buffer (car bl))
-                (name (buffer-name buffer))
-                (file (buffer-file-name buffer))
-                this-buffer-line-start
-                this-buffer-read-only
-                this-buffer-size
-                this-buffer-mode-name
-                this-buffer-directory)
-           (save-excursion
-             (set-buffer buffer)
-             (setq this-buffer-read-only buffer-read-only)
-             (setq this-buffer-size (buffer-size))
-             (setq this-buffer-mode-name
-                   (if (eq buffer standard-output)
-                       "Buffer Menu" mode-name))
-             (or file
-                 ;; No visited file.  Check local value of
-                 ;; list-buffers-directory.
-                 (if (and (boundp 'list-buffers-directory)
-                          list-buffers-directory)
-                     (setq this-buffer-directory list-buffers-directory))))
-           (cond
-            ;; Don't mention internal buffers.
-            ((string= (substring name 0 1) " "))
-            ;; Maybe don't mention buffers without files.
-            ((and files-only (not file)))
-             ((string= name "*Buffer List*"))
-            ;; Otherwise output info.
-            (t
-             (setq this-buffer-line-start (point))
-             ;; Identify current buffer.
-             (if (eq buffer old-buffer)
-                 (progn
-                   (setq desired-point (point))
-                   (princ "."))
-               (princ " "))
-             ;; Identify modified buffers.
-             (princ (if (buffer-modified-p buffer) "*" " "))
-             ;; Handle readonly status.  The output buffer is special
-             ;; cased to appear readonly; it is actually made so at a later
-             ;; date.
-             (princ (if (or (eq buffer standard-output)
-                            this-buffer-read-only)
-                        "% "
-                      "  "))
-             (princ name)
-             ;; Put the buffer name into a text property
-             ;; so we don't have to extract it from the text.
-             ;; This way we avoid problems with unusual buffer names.
-             (setq this-buffer-line-start
-                   (+ this-buffer-line-start Buffer-menu-buffer-column))
-             (let ((name-end (point)))
-               (indent-to 17 2)
-               (put-text-property this-buffer-line-start name-end
-                                  'buffer-name name)
-               (put-text-property this-buffer-line-start (point)
-                                  'buffer buffer)
-               (put-text-property this-buffer-line-start name-end
-                                  'mouse-face 'highlight))
-             (let (size
-                   mode
-                   (excess (- (current-column) 17)))
-               (setq size (format "%8d" this-buffer-size))
-               ;; Ack -- if looking at the *Buffer List* buffer,
-               ;; always use "Buffer Menu" mode.  Otherwise the
-               ;; first time the buffer is created, the mode will be wrong.
-               (setq mode this-buffer-mode-name)
-               (while (and (> excess 0) (= (aref size 0) ?\ ))
-                 (setq size (substring size 1))
-                 (setq excess (1- excess)))
-               (princ size)
-               (indent-to 27 1)
-               (princ mode))
-             (indent-to 40 1)
-             (or file (setq file this-buffer-directory))
-             (if file
-                 (princ (abbreviate-file-name file)))
-             (princ "\n"))))
-         (setq bl (cdr bl))))
+      (dolist (buffer (buffer-list))
+        (let ((name (buffer-name buffer))
+              (file (buffer-file-name buffer))
+              this-buffer-line-start
+              this-buffer-read-only
+              (this-buffer-size (buffer-size buffer))
+              this-buffer-mode-name
+              this-buffer-directory)
+          (with-current-buffer buffer
+            (setq this-buffer-read-only buffer-read-only
+                  this-buffer-mode-name mode-name)
+            (unless file
+              ;; No visited file.  Check local value of
+              ;; list-buffers-directory.
+              (when (and (boundp 'list-buffers-directory)
+                         list-buffers-directory)
+                (setq this-buffer-directory list-buffers-directory))))
+          (cond
+            ;; Don't mention internal buffers.
+            ((string= (substring name 0 1) " "))
+            ;; Maybe don't mention buffers without files.
+            ((and files-only (not file)))
+            ((string= name "*Buffer List*"))
+            ;; Otherwise output info.
+            (t
+             (setq this-buffer-line-start (point))
+             ;; Identify current buffer.
+             (if (eq buffer old-buffer)
+                 (progn
+                   (setq desired-point (point))
+                   (princ "."))
+               (princ " "))
+             ;; Identify modified buffers.
+             (princ (if (buffer-modified-p buffer) "*" " "))
+             ;; Handle readonly status.  The output buffer is special
+             ;; cased to appear readonly; it is actually made so at a
+             ;; later date.
+             (princ (if (or (eq buffer standard-output)
+                            this-buffer-read-only)
+                        "% "
+                      "  "))
+             (princ name)
+             ;; Put the buffer name into a text property
+             ;; so we don't have to extract it from the text.
+             ;; This way we avoid problems with unusual buffer names.
+             (setq this-buffer-line-start
+                   (+ this-buffer-line-start Buffer-menu-buffer-column))
+             (let ((name-end (point)))
+               (indent-to 17 2)
+               (put-text-property this-buffer-line-start name-end
+                                  'buffer-name name)
+               (put-text-property this-buffer-line-start (point)
+                                  'buffer buffer)
+               (put-text-property this-buffer-line-start name-end
+                                  'mouse-face 'highlight))
+             (let ((size (format "%8d" this-buffer-size))
+                   (mode this-buffer-mode-name)
+                   (excess (- (current-column) 17)))
+               (while (and (> excess 0) (= (aref size 0) ?\ ))
+                 (setq size (substring size 1)
+                       excess (1- excess)))
+               (princ size)
+               (indent-to 27 1)
+               (princ mode))
+             (indent-to 40 1)
+             (or file (setq file this-buffer-directory))
+             (when file
+               (princ (abbreviate-file-name file)))
+             (princ "\n")))))
       (Buffer-menu-mode)
       ;; DESIRED-POINT doesn't have to be set; it is not when the
       ;; current buffer is not displayed for some reason.