]> code.delx.au - gnu-emacs/blobdiff - lisp/buff-menu.el
Remove C-c C-j binding.
[gnu-emacs] / lisp / buff-menu.el
index 33a8c3ec3f552dae02a754be764ecc2feff114c2..3094da3bfe83ba2f238c251f45d7568629ca2be7 100644 (file)
@@ -1,7 +1,7 @@
-;;; buff-menu.el --- buffer menu main function and support functions
+;;; buff-menu.el --- buffer menu main function and support functions -*- coding:utf-8 -*-
 
 
-;; 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, 2005, 2006 Free Software Foundation, Inc.
 
 ;; Maintainer: FSF
 ;; Keywords: convenience
 
 ;; Maintainer: FSF
 ;; Keywords: convenience
@@ -20,8 +20,8 @@
 
 ;; You should have received a copy of the GNU General Public License
 ;; along with GNU Emacs; see the file COPYING.  If not, write to the
 
 ;; You should have received a copy of the GNU General Public License
 ;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
 
 ;;; Commentary:
 
 
 ;;; Commentary:
 
   :type 'boolean
   :group 'Buffer-menu)
 
   :type 'boolean
   :group 'Buffer-menu)
 
-(defface Buffer-menu-buffer-face
+(defface buffer-menu-buffer
   '((t (:weight bold)))
   '((t (:weight bold)))
-  "Face used to highlight buffer name."
-  :group 'font-lock-highlighting-faces)
+  "Face used to highlight buffer names in the buffer menu."
+  :group 'Buffer-menu)
+(put 'Buffer-menu-buffer 'face-alias 'buffer-menu-buffer)
 
 (defcustom Buffer-menu-buffer+size-width 26
   "*How wide to jointly make the buffer name and size columns."
 
 (defcustom Buffer-menu-buffer+size-width 26
   "*How wide to jointly make the buffer name and size columns."
   :type 'number
   :group 'Buffer-menu)
 
   :type 'number
   :group 'Buffer-menu)
 
+(defcustom Buffer-menu-use-frame-buffer-list t
+  "If non-nil, the Buffer Menu uses the selected frame's buffer list.
+Buffers that were never selected in that frame are listed at the end.
+If the value is nil, the Buffer Menu uses the global buffer list.
+This variable matters if the Buffer Menu is sorted by visited order,
+as it is by default."
+  :type 'boolean
+  :group 'Buffer-menu
+  :version "22.1")
+
 ;; This should get updated & resorted when you click on a column heading
 (defvar Buffer-menu-sort-column nil
 ;; This should get updated & resorted when you click on a column heading
 (defvar Buffer-menu-sort-column nil
-  "*2 for sorting by buffer names.  5 for sorting by file names.
+  "2 for sorting by buffer names.  5 for sorting by file names.
 nil for default sorting by visited order.")
 
 (defconst Buffer-menu-buffer-column 4)
 nil for default sorting by visited order.")
 
 (defconst Buffer-menu-buffer-column 4)
@@ -141,6 +152,7 @@ Auto Revert Mode.")
   (define-key Buffer-menu-mode-map "V" 'Buffer-menu-view)
   (define-key Buffer-menu-mode-map "T" 'Buffer-menu-toggle-files-only)
   (define-key Buffer-menu-mode-map [mouse-2] 'Buffer-menu-mouse-select)
   (define-key Buffer-menu-mode-map "V" 'Buffer-menu-view)
   (define-key Buffer-menu-mode-map "T" 'Buffer-menu-toggle-files-only)
   (define-key Buffer-menu-mode-map [mouse-2] 'Buffer-menu-mouse-select)
+  (define-key Buffer-menu-mode-map [follow-link] 'mouse-face)
 )
 
 ;; Buffer Menu mode is suitable only for specially formatted data.
 )
 
 ;; Buffer Menu mode is suitable only for specially formatted data.
@@ -188,18 +200,39 @@ Letters do not insert themselves; instead, they are commands.
        #'(lambda (&optional noconfirm) 'fast))
   (setq truncate-lines t)
   (setq buffer-read-only t)
        #'(lambda (&optional noconfirm) 'fast))
   (setq truncate-lines t)
   (setq buffer-read-only t)
-  (run-hooks 'buffer-menu-mode-hook))
+  (run-mode-hooks 'buffer-menu-mode-hook))
 
 
+;; This function exists so we can make the doc string of Buffer-menu-mode
+;; look nice.
 (defun Buffer-menu-revert ()
   "Update the list of buffers."
   (interactive)
   (revert-buffer))
 
 (defun Buffer-menu-revert-function (ignore1 ignore2)
 (defun Buffer-menu-revert ()
   "Update the list of buffers."
   (interactive)
   (revert-buffer))
 
 (defun Buffer-menu-revert-function (ignore1 ignore2)
+  (or (eq buffer-undo-list t)
+      (setq buffer-undo-list nil))
   ;; We can not use save-excursion here.  The buffer gets erased.
   ;; We can not use save-excursion here.  The buffer gets erased.
-  (let ((old-point (point)))
-    (list-buffers-noselect Buffer-menu-files-only)
-    (goto-char old-point)))
+  (let ((opoint (point))
+       (eobp (eobp))
+       (ocol (current-column))
+       (oline (progn (move-to-column 4)
+                     (get-text-property (point) 'buffer)))
+       (prop (point-min))
+       ;; do not make undo records for the reversion.
+       (buffer-undo-list t))
+    ;; We can be called by Auto Revert Mode with the "*Buffer Menu*"
+    ;; temporarily the current buffer.  Make sure that the
+    ;; interactively current buffer is correctly identified with a `.'
+    ;; by `list-buffers-noselect'.
+    (with-current-buffer (window-buffer)
+      (list-buffers-noselect Buffer-menu-files-only))
+    (if oline
+       (while (setq prop (next-single-property-change prop 'buffer))
+         (when (eq (get-text-property prop 'buffer) oline)
+           (goto-char prop)
+           (move-to-column ocol)))
+      (goto-char (if eobp (point-max) opoint)))))
 
 (defun Buffer-menu-toggle-files-only (arg)
   "Toggle whether the current buffer-menu displays only file buffers.
 
 (defun Buffer-menu-toggle-files-only (arg)
   "Toggle whether the current buffer-menu displays only file buffers.
@@ -285,7 +318,7 @@ For more information, see the function `buffer-menu'."
 
 (defun Buffer-menu-unmark (&optional backup)
   "Cancel all requested operations on buffer on this line and move down.
 
 (defun Buffer-menu-unmark (&optional backup)
   "Cancel all requested operations on buffer on this line and move down.
-Optional ARG means move up."
+Optional prefix arg means move up."
   (interactive "P")
   (when (Buffer-menu-no-header)
     (let* ((buf (Buffer-menu-buffer t))
   (interactive "P")
   (when (Buffer-menu-no-header)
     (let* ((buf (Buffer-menu-buffer t))
@@ -349,18 +382,21 @@ and then move up one line.  Prefix arg means move that many lines."
   (save-excursion
    (beginning-of-line)
    (forward-char 2)
   (save-excursion
    (beginning-of-line)
    (forward-char 2)
-   (if (= (char-after) (if arg ?  ?*))
+   (if (= (char-after) (if arg ?\s ?*))
        (let ((buffer-read-only nil))
         (delete-char 1)
        (let ((buffer-read-only nil))
         (delete-char 1)
-        (insert (if arg ?* ? ))))))
+        (insert (if arg ?* ?\s))))))
+
+(defun Buffer-menu-beginning ()
+  (goto-char (point-min))
+  (unless Buffer-menu-use-header-line
+    (forward-line)))
 
 (defun Buffer-menu-execute ()
   "Save and/or delete buffers marked with \\<Buffer-menu-mode-map>\\[Buffer-menu-save] or \\<Buffer-menu-mode-map>\\[Buffer-menu-delete] commands."
   (interactive)
   (save-excursion
 
 (defun Buffer-menu-execute ()
   "Save and/or delete buffers marked with \\<Buffer-menu-mode-map>\\[Buffer-menu-save] or \\<Buffer-menu-mode-map>\\[Buffer-menu-delete] commands."
   (interactive)
   (save-excursion
-    (goto-char (point-min))
-    (unless Buffer-menu-use-header-line
-      (forward-line 1))
+    (Buffer-menu-beginning)
     (while (re-search-forward "^..S" nil t)
       (let ((modp nil))
        (save-excursion
     (while (re-search-forward "^..S" nil t)
       (let ((modp nil))
        (save-excursion
@@ -369,11 +405,9 @@ and then move up one line.  Prefix arg means move that many lines."
          (setq modp (buffer-modified-p)))
        (let ((buffer-read-only nil))
          (delete-char -1)
          (setq modp (buffer-modified-p)))
        (let ((buffer-read-only nil))
          (delete-char -1)
-         (insert (if modp ?* ? ))))))
+         (insert (if modp ?* ?\s))))))
   (save-excursion
   (save-excursion
-    (goto-char (point-min))
-    (unless Buffer-menu-use-header-line
-      (forward-line 1))
+    (Buffer-menu-beginning)
     (let ((buff-menu-buffer (current-buffer))
          (buffer-read-only nil))
       (while (re-search-forward "^D" nil t)
     (let ((buff-menu-buffer (current-buffer))
          (buffer-read-only nil))
       (while (re-search-forward "^D" nil t)
@@ -384,7 +418,7 @@ and then move up one line.  Prefix arg means move that many lines."
              (save-excursion (kill-buffer buf)))
          (if (and buf (buffer-name buf))
            (progn (delete-char 1)
              (save-excursion (kill-buffer buf)))
          (if (and buf (buffer-name buf))
            (progn (delete-char 1)
-                  (insert ? ))
+                  (insert ?\s))
          (delete-region (point) (progn (forward-line 1) (point)))
            (unless (bobp)
              (forward-char -1))))))))
          (delete-region (point) (progn (forward-line 1) (point)))
            (unless (bobp)
              (forward-char -1))))))))
@@ -399,14 +433,12 @@ in the selected frame."
        (menu (current-buffer))
        (others ())
        tem)
        (menu (current-buffer))
        (others ())
        tem)
-    (goto-char (point-min))
-    (unless Buffer-menu-use-header-line
-      (forward-line 1))
+    (Buffer-menu-beginning)
     (while (re-search-forward "^>" nil t)
       (setq tem (Buffer-menu-buffer t))
       (let ((buffer-read-only nil))
        (delete-char -1)
     (while (re-search-forward "^>" nil t)
       (setq tem (Buffer-menu-buffer t))
       (let ((buffer-read-only nil))
        (delete-char -1)
-       (insert ?\ ))
+       (insert ?\s))
       (or (eq tem buff) (memq tem others) (setq others (cons tem others))))
     (setq others (nreverse others)
          tem (/ (1- (frame-height)) (1+ (length others))))
       (or (eq tem buff) (memq tem others) (setq others (cons tem others))))
     (setq others (nreverse others)
          tem (/ (1- (frame-height)) (1+ (length others))))
@@ -477,14 +509,19 @@ in the selected frame."
   "Make the other window select this line's buffer.
 The current window remains selected."
   (interactive)
   "Make the other window select this line's buffer.
 The current window remains selected."
   (interactive)
-  (display-buffer (Buffer-menu-buffer t)))
+  (let ((pop-up-windows t)
+       same-window-buffer-names
+       same-window-regexps)
+    (display-buffer (Buffer-menu-buffer t))))
 
 (defun Buffer-menu-2-window ()
   "Select this line's buffer, with previous buffer in second window."
   (interactive)
   (let ((buff (Buffer-menu-buffer t))
        (menu (current-buffer))
 
 (defun Buffer-menu-2-window ()
   "Select this line's buffer, with previous buffer in second window."
   (interactive)
   (let ((buff (Buffer-menu-buffer t))
        (menu (current-buffer))
-       (pop-up-windows t))
+       (pop-up-windows t)
+       same-window-buffer-names
+       same-window-regexps)
     (delete-other-windows)
     (switch-to-buffer (other-buffer))
     (pop-to-buffer buff)
     (delete-other-windows)
     (switch-to-buffer (other-buffer))
     (pop-to-buffer buff)
@@ -497,7 +534,7 @@ The current window remains selected."
     (save-excursion
       (set-buffer (Buffer-menu-buffer t))
       (vc-toggle-read-only)
     (save-excursion
       (set-buffer (Buffer-menu-buffer t))
       (vc-toggle-read-only)
-      (setq char (if buffer-read-only ?% ? )))
+      (setq char (if buffer-read-only ?% ?\s)))
     (save-excursion
       (beginning-of-line)
       (forward-char 1)
     (save-excursion
       (beginning-of-line)
       (forward-char 1)
@@ -570,7 +607,7 @@ For more information, see the function `buffer-menu'."
          (make-string (- Buffer-menu-buffer+size-width
                          (length name)
                          (length size))
          (make-string (- Buffer-menu-buffer+size-width
                          (length name)
                          (length size))
-                      ? )
+                      ?\s)
          size))
 
 (defun Buffer-menu-sort (column)
          size))
 
 (defun Buffer-menu-sort (column)
@@ -581,95 +618,164 @@ For more information, see the function `buffer-menu'."
     (if (< column 2) (setq column 2))
     (if (> column 5) (setq column 5)))
   (setq Buffer-menu-sort-column column)
     (if (< column 2) (setq column 2))
     (if (> column 5) (setq column 5)))
   (setq Buffer-menu-sort-column column)
-  (Buffer-menu-revert))
+  (let (buffer-read-only l buf m1 m2)
+    (save-excursion
+      (Buffer-menu-beginning)
+      (while (not (eobp))
+       (when (buffer-live-p (setq buf (get-text-property (+ (point) 4) 'buffer)))
+         (setq m1 (char-after)
+               m1 (if (memq m1 '(?> ?D)) m1)
+               m2 (char-after (+ (point) 2))
+               m2 (if (eq m2 ?S) m2))
+         (if (or m1 m2)
+             (push (list buf m1 m2) l)))
+       (forward-line)))
+    (Buffer-menu-revert)
+    (setq buffer-read-only)
+    (save-excursion
+      (Buffer-menu-beginning)
+      (while (not (eobp))
+       (when (setq buf (assq (get-text-property (+ (point) 4) 'buffer) l))
+         (setq m1 (cadr buf)
+               m2 (cadr (cdr buf)))
+         (when m1
+           (delete-char 1)
+           (insert m1)
+           (backward-char 1))
+         (when m2
+           (forward-char 2)
+           (delete-char 1)
+           (insert m2)))
+       (forward-line)))))
+
+(defun Buffer-menu-sort-by-column (&optional e)
+  "Sort the buffer menu by the column clicked on."
+  (interactive (list last-input-event))
+  (if e (mouse-select-window e))
+  (let* ((pos (event-start e))
+        (obj (posn-object pos))
+        (col (if obj
+                 (get-text-property (cdr obj) 'column (car obj))
+               (get-text-property (posn-point pos) 'column))))
+    (Buffer-menu-sort col)))
+
+(defvar Buffer-menu-sort-button-map
+  (let ((map (make-sparse-keymap)))
+    ;; This keymap handles both nil and non-nil values for
+    ;; Buffer-menu-use-header-line.
+    (define-key map [header-line mouse-1] 'Buffer-menu-sort-by-column)
+    (define-key map [header-line mouse-2] 'Buffer-menu-sort-by-column)
+    (define-key map [mouse-2] 'Buffer-menu-sort-by-column)
+    (define-key map [follow-link] 'mouse-face)
+    (define-key map "\C-m" 'Buffer-menu-sort-by-column)
+    map)
+  "Local keymap for Buffer menu sort buttons.")
 
 (defun Buffer-menu-make-sort-button (name column)
   (if (equal column Buffer-menu-sort-column) (setq column nil))
   (propertize name
 
 (defun Buffer-menu-make-sort-button (name column)
   (if (equal column Buffer-menu-sort-column) (setq column nil))
   (propertize name
-             'help-echo (if column
-                            (concat "mouse-2: sort by " (downcase name))
-                          "mouse-2: sort by visited order")
+             'column column
+             'help-echo (concat
+                         (if Buffer-menu-use-header-line
+                             "mouse-1, mouse-2: sort by "
+                           "mouse-2, RET: sort by ")
+                         (if column (downcase name) "visited order"))
              'mouse-face 'highlight
              'mouse-face 'highlight
-             'keymap (let ((map (make-sparse-keymap)))
-                       (define-key map [header-line mouse-2]
-                         `(lambda () (interactive)
-                            (Buffer-menu-sort ,column)))
-                       map)))
+             'keymap Buffer-menu-sort-button-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.
 
   "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)
 For more information, see the function `buffer-menu'."
   (let* ((old-buffer (current-buffer))
         (standard-output standard-output)
-        (mode-end (make-string (- Buffer-menu-mode-width 2) ? ))
-        (header (concat " " (propertize "CRM " 'face 'fixed-pitch)
+        (mode-end (make-string (- Buffer-menu-mode-width 2) ?\s))
+        (header (concat "CRM "
                         (Buffer-menu-buffer+size
                          (Buffer-menu-make-sort-button "Buffer" 2)
                          (Buffer-menu-make-sort-button "Size" 3))
                         "  "
                         (Buffer-menu-make-sort-button "Mode" 4) mode-end
                         (Buffer-menu-make-sort-button "File" 5) "\n"))
                         (Buffer-menu-buffer+size
                          (Buffer-menu-make-sort-button "Buffer" 2)
                          (Buffer-menu-make-sort-button "Size" 3))
                         "  "
                         (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))
     (when Buffer-menu-use-header-line
       (let ((pos 0))
-       ;; Turn spaces in the header into stretch specs so they work
-       ;; regardless of the header-line face.
-       (while (string-match "[ \t]+" header pos)
+       ;; Turn whitespace chars in the header into stretch specs so
+       ;; they work regardless of the header-line face.
+       (while (string-match "[ \t\n]+" header pos)
          (setq pos (match-end 0))
          (put-text-property (match-beginning 0) pos 'display
          (setq pos (match-end 0))
          (put-text-property (match-beginning 0) pos 'display
-                            ;; Assume fixed-size chars
-                            (list 'space :align-to (1- pos))
-                            header))))
+                            ;; Assume fixed-size chars in the buffer.
+                            (list 'space :align-to pos)
+                            header)))
+      ;; Try to better align the one-char headers.
+      (put-text-property 0 3 'face 'fixed-pitch header)
+      ;; Add a "dummy" leading space to align the beginning of the header
+      ;; line with the beginning of the text (rather than with the left
+      ;; scrollbar or the left fringe).  –-Stef
+      (setq header (concat (propertize " " 'display '(space :align-to 0))
+                          header)))
     (with-current-buffer (get-buffer-create "*Buffer List*")
       (setq buffer-read-only nil)
       (erase-buffer)
       (setq standard-output (current-buffer))
       (unless Buffer-menu-use-header-line
     (with-current-buffer (get-buffer-create "*Buffer List*")
       (setq buffer-read-only nil)
       (erase-buffer)
       (setq standard-output (current-buffer))
       (unless Buffer-menu-use-header-line
-       (insert header (propertize "---" 'face 'fixed-pitch) " ")
-       (insert (Buffer-menu-buffer+size "------" "----"))
-       (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))))
+        ;; Use U+2014 (EM DASH) to underline if possible, else U+002D (HYPHEN-MINUS)
+       (let ((underline (if (char-displayable-p ?—) ?— ?-)))
+         (insert header
+                 (apply 'string
+                        (mapcar (lambda (c)
+                                  (if (memq c '(?\n ?\s)) c underline))
+                                header)))))
+      ;; Collect info for every buffer we're interested in.
+      (dolist (buffer (or buffer-list
+                         (buffer-list
+                          (when Buffer-menu-use-frame-buffer-list
+                            (selected-frame)))))
+       (with-current-buffer buffer
+         (let ((name (buffer-name))
+               (file buffer-file-name))
+           (unless (and (not buffer-list)
+                        (or
+                         ;; 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.
+             (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) ?. ?\s)
+                          ;; 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)
+                              ?% ?\s)
+                          ;; Identify modified buffers.
+                          (if (buffer-modified-p) ?* ?\s)
+                          ;; Space separator.
+                          ?\s)))
+               (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
       (dolist (buffer
               (if Buffer-menu-sort-column
                   (sort list
@@ -691,7 +797,7 @@ For more information, see the function `buffer-menu'."
                                         (int-to-string (nth 3 buffer))
                                         `(buffer-name ,(nth 2 buffer)
                                           buffer ,(car buffer)
                                         (int-to-string (nth 3 buffer))
                                         `(buffer-name ,(nth 2 buffer)
                                           buffer ,(car buffer)
-                                          face Buffer-menu-buffer-face
+                                          font-lock-face buffer-menu-buffer
                                           mouse-face highlight
                                           help-echo "mouse-2: select this buffer"))
                "  "
                                           mouse-face highlight
                                           help-echo "mouse-2: select this buffer"))
                "  "
@@ -714,5 +820,5 @@ For more information, see the function `buffer-menu'."
       (set-buffer-modified-p nil)
       (current-buffer))))
 
       (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
 ;;; buff-menu.el ends here