* lisp/buff-menu.el: Convert to Tabulated List mode.

(Buffer-menu-buffer+size-width): Make obsolete.
(Buffer-menu-name-width, Buffer-menu-size-width): New variables.
(Buffer-menu-mode-map): Inherit from tabulated-list-mode-map.
(Buffer-menu-mode): Derive from tabulated-list-mode.  Move command
documentation into docstring of buffer-menu.
(Buffer-menu-toggle-files-only): Add an informative message.
(Buffer-menu-sort): Convert to alias for tabulated-list-sort.
(Buffer-menu-buffer, Buffer-menu-beginning, Buffer-menu-mark)
(Buffer-menu-unmark, Buffer-menu-backup-unmark)
(Buffer-menu-delete, Buffer-menu-save, Buffer-menu-not-modified)
(Buffer-menu-execute, Buffer-menu-select)
(Buffer-menu-marked-buffers, Buffer-menu-toggle-read-only)
(Buffer-menu-bury): Use Tabulated List machinery.
(Buffer-menu-mouse-select, Buffer-menu-sort-by-column)
(Buffer-menu-sort-button-map, Buffer-menu-make-sort-button):
Deleted.
(list-buffers--refresh): New function.
(list-buffers-noselect): Use it.
(tabulated-list-entry-size->, Buffer-menu--pretty-name)
(Buffer-menu--pretty-file-name): New helper functions.

* lisp/loadup.el: Preload tabulated-list.

* lisp/emacs-lisp/tabulated-list.el (tabulated-list-sort): Rename from
tabulated-list-sort-column.
(tabulated-list-init-header): Add the initial aligning space even
if tabulated-list-padding is zero.

* src/lisp.mk (lisp): Update.
This commit is contained in:
Chong Yidong 2012-05-07 00:45:46 +08:00
parent e129292c44
commit e5f9458fe8
8 changed files with 370 additions and 642 deletions

View file

@ -144,7 +144,7 @@ If ADVANCE is non-nil, move forward by one line afterwards."
(set-keymap-parent map button-buffer-map)
(define-key map "n" 'next-line)
(define-key map "p" 'previous-line)
(define-key map "S" 'tabulated-list-sort-column)
(define-key map "S" 'tabulated-list-sort)
(define-key map [follow-link] 'mouse-face)
(define-key map [mouse-2] 'mouse-select-window)
map)
@ -174,8 +174,7 @@ If ADVANCE is non-nil, move forward by one line afterwards."
mouse-face highlight
keymap ,tabulated-list-sort-button-map))
(cols nil))
(if (> tabulated-list-padding 0)
(push (propertize " " 'display `(space :align-to ,x)) cols))
(push (propertize " " 'display `(space :align-to ,x)) cols)
(dotimes (n (length tabulated-list-format))
(let* ((col (aref tabulated-list-format n))
(label (nth 0 col))
@ -183,9 +182,6 @@ If ADVANCE is non-nil, move forward by one line afterwards."
(props (nthcdr 3 col))
(pad-right (or (plist-get props :pad-right) 1)))
(setq x (+ x pad-right width))
(and (<= tabulated-list-padding 0)
(= n 0)
(setq label (concat " " label)))
(push
(cond
;; An unsortable column
@ -402,7 +398,7 @@ this is the vector stored within it."
(with-current-buffer (window-buffer (posn-window pos))
(tabulated-list--sort-by-column-name name))))
(defun tabulated-list-sort-column (&optional n)
(defun tabulated-list-sort (&optional n)
"Sort Tabulated List entries by the column at point.
With a numeric prefix argument N, sort the Nth column."
(interactive "P")
@ -424,7 +420,6 @@ With a numeric prefix argument N, sort the Nth column."
;;; The mode definition:
;;;###autoload
(define-derived-mode tabulated-list-mode special-mode "Tabulated"
"Generic major mode for browsing a list of items.
This mode is usually not used directly; instead, other major