diff options
| author | Dan Nicolaescu | 2006-04-02 19:17:34 +0000 |
|---|---|---|
| committer | Dan Nicolaescu | 2006-04-02 19:17:34 +0000 |
| commit | f0b315896ca8aa8c0113753bb1b3e1965d2153b4 (patch) | |
| tree | 474f14d3f61a6df904380052b17de011e421fa58 | |
| parent | 5af68e282f359dbe09565f690d3f6920a593fb0e (diff) | |
| download | emacs-f0b315896ca8aa8c0113753bb1b3e1965d2153b4.tar.gz emacs-f0b315896ca8aa8c0113753bb1b3e1965d2153b4.zip | |
* ibuf-macs.el (define-ibuffer-column): Add a new key:
header-mouse-map.
* ibuffer.el (ibuffer-name-header-map, ibuffer-size-header-map)
(ibuffer-mode-header-map): New keymaps.
(ibuffer-update-title-and-summary): Enable mouse face highlighting
and keybindings for column headers.
(name,size,mode) <define-ibuffer-column>: Add a header-mouse-map
property.
| -rw-r--r-- | lisp/ChangeLog | 12 | ||||
| -rw-r--r-- | lisp/ibuf-macs.el | 5 | ||||
| -rw-r--r-- | lisp/ibuffer.el | 36 |
3 files changed, 45 insertions, 8 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 98ddbf601d3..a265db67369 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,3 +1,15 @@ | |||
| 1 | 2006-04-02 Dan Nicolaescu <dann@ics.uci.edu> | ||
| 2 | |||
| 3 | * ibuf-macs.el (define-ibuffer-column): Add a new key: | ||
| 4 | header-mouse-map. | ||
| 5 | |||
| 6 | * ibuffer.el (ibuffer-name-header-map, ibuffer-size-header-map) | ||
| 7 | (ibuffer-mode-header-map): New keymaps. | ||
| 8 | (ibuffer-update-title-and-summary): Enable mouse face highlighting | ||
| 9 | and keybindings for column headers. | ||
| 10 | (name,size,mode) <define-ibuffer-column>: Add a header-mouse-map | ||
| 11 | property. | ||
| 12 | |||
| 1 | 2006-04-02 Drew Adams <drew.adams@oracle.com> (tiny change) | 13 | 2006-04-02 Drew Adams <drew.adams@oracle.com> (tiny change) |
| 2 | 14 | ||
| 3 | * speedbar.el (speedbar-after-create-hook): Doc fix. | 15 | * speedbar.el (speedbar-after-create-hook): Doc fix. |
diff --git a/lisp/ibuf-macs.el b/lisp/ibuf-macs.el index 38fee1b56c1..603ffc45c93 100644 --- a/lisp/ibuf-macs.el +++ b/lisp/ibuf-macs.el | |||
| @@ -75,8 +75,8 @@ During evaluation of body, bind `it' to the value returned by TEST." | |||
| 75 | ;; (put 'ibuffer-save-marks 'lisp-indent-function 0) | 75 | ;; (put 'ibuffer-save-marks 'lisp-indent-function 0) |
| 76 | 76 | ||
| 77 | ;;;###autoload | 77 | ;;;###autoload |
| 78 | (defmacro* define-ibuffer-column (symbol (&key name inline props | 78 | (defmacro* define-ibuffer-column (symbol (&key name inline props summarizer |
| 79 | summarizer) &rest body) | 79 | header-mouse-map) &rest body) |
| 80 | "Define a column SYMBOL for use with `ibuffer-formats'. | 80 | "Define a column SYMBOL for use with `ibuffer-formats'. |
| 81 | 81 | ||
| 82 | BODY will be called with `buffer' bound to the buffer object, and | 82 | BODY will be called with `buffer' bound to the buffer object, and |
| @@ -115,6 +115,7 @@ change its definition, you should explicitly call | |||
| 115 | ,(if (stringp name) | 115 | ,(if (stringp name) |
| 116 | name | 116 | name |
| 117 | (capitalize (symbol-name symbol)))) | 117 | (capitalize (symbol-name symbol)))) |
| 118 | ,(if header-mouse-map `(put (quote ,sym) 'header-mouse-map ,header-mouse-map)) | ||
| 118 | ,(if summarizer | 119 | ,(if summarizer |
| 119 | ;; Store the name of the summarizing function. | 120 | ;; Store the name of the summarizing function. |
| 120 | `(put (quote ,sym) 'ibuffer-column-summarizer | 121 | `(put (quote ,sym) 'ibuffer-column-summarizer |
diff --git a/lisp/ibuffer.el b/lisp/ibuffer.el index 179c7b334bd..0a84f9b0c82 100644 --- a/lisp/ibuffer.el +++ b/lisp/ibuffer.el | |||
| @@ -829,6 +829,21 @@ directory, like `default-directory'." | |||
| 829 | (define-key map (kbd "RET") 'ibuffer-interactive-filter-by-mode) | 829 | (define-key map (kbd "RET") 'ibuffer-interactive-filter-by-mode) |
| 830 | map)) | 830 | map)) |
| 831 | 831 | ||
| 832 | (defvar ibuffer-name-header-map | ||
| 833 | (let ((map (make-sparse-keymap))) | ||
| 834 | (define-key map [(mouse-1)] 'ibuffer-do-sort-by-alphabetic) | ||
| 835 | map)) | ||
| 836 | |||
| 837 | (defvar ibuffer-size-header-map | ||
| 838 | (let ((map (make-sparse-keymap))) | ||
| 839 | (define-key map [(mouse-1)] 'ibuffer-do-sort-by-size) | ||
| 840 | map)) | ||
| 841 | |||
| 842 | (defvar ibuffer-mode-header-map | ||
| 843 | (let ((map (make-sparse-keymap))) | ||
| 844 | (define-key map [(mouse-1)] 'ibuffer-do-sort-by-major-mode) | ||
| 845 | map)) | ||
| 846 | |||
| 832 | (defvar ibuffer-mode-filter-group-map | 847 | (defvar ibuffer-mode-filter-group-map |
| 833 | (let ((map (make-sparse-keymap))) | 848 | (let ((map (make-sparse-keymap))) |
| 834 | (define-key map [(mouse-1)] 'ibuffer-mouse-toggle-mark) | 849 | (define-key map [(mouse-1)] 'ibuffer-mouse-toggle-mark) |
| @@ -1666,6 +1681,7 @@ If point is on a group name, this function operates on that group." | |||
| 1666 | 1681 | ||
| 1667 | (define-ibuffer-column name | 1682 | (define-ibuffer-column name |
| 1668 | (:inline t | 1683 | (:inline t |
| 1684 | :header-mouse-map ibuffer-name-header-map | ||
| 1669 | :props | 1685 | :props |
| 1670 | ('mouse-face 'highlight 'keymap ibuffer-name-map | 1686 | ('mouse-face 'highlight 'keymap ibuffer-name-map |
| 1671 | 'ibuffer-name-column t | 1687 | 'ibuffer-name-column t |
| @@ -1682,6 +1698,7 @@ If point is on a group name, this function operates on that group." | |||
| 1682 | 1698 | ||
| 1683 | (define-ibuffer-column size | 1699 | (define-ibuffer-column size |
| 1684 | (:inline t | 1700 | (:inline t |
| 1701 | :header-mouse-map ibuffer-size-header-map | ||
| 1685 | :summarizer | 1702 | :summarizer |
| 1686 | (lambda (column-strings) | 1703 | (lambda (column-strings) |
| 1687 | (let ((total 0)) | 1704 | (let ((total 0)) |
| @@ -1695,6 +1712,7 @@ If point is on a group name, this function operates on that group." | |||
| 1695 | 1712 | ||
| 1696 | (define-ibuffer-column mode | 1713 | (define-ibuffer-column mode |
| 1697 | (:inline t | 1714 | (:inline t |
| 1715 | :header-mouse-map ibuffer-mode-header-map | ||
| 1698 | :props | 1716 | :props |
| 1699 | ('mouse-face 'highlight | 1717 | ('mouse-face 'highlight |
| 1700 | 'keymap ibuffer-mode-name-map | 1718 | 'keymap ibuffer-mode-name-map |
| @@ -2009,12 +2027,18 @@ the value of point at the beginning of the line for that buffer." | |||
| 2009 | (setq min (- min))) | 2027 | (setq min (- min))) |
| 2010 | (let* ((name (or (get sym 'ibuffer-column-name) | 2028 | (let* ((name (or (get sym 'ibuffer-column-name) |
| 2011 | (error "Unknown column %s in ibuffer-formats" sym))) | 2029 | (error "Unknown column %s in ibuffer-formats" sym))) |
| 2012 | (len (length name))) | 2030 | (len (length name)) |
| 2013 | (if (< len min) | 2031 | (hmap (get sym 'header-mouse-map)) |
| 2014 | (ibuffer-format-column name | 2032 | (strname (if (< len min) |
| 2015 | (- min len) | 2033 | (ibuffer-format-column name |
| 2016 | align) | 2034 | (- min len) |
| 2017 | name)))))) | 2035 | align) |
| 2036 | name))) | ||
| 2037 | (when hmap | ||
| 2038 | (setq | ||
| 2039 | strname | ||
| 2040 | (propertize strname 'mouse-face 'highlight 'keymap hmap))) | ||
| 2041 | strname))))) | ||
| 2018 | (add-text-properties opos (point) `(ibuffer-title-header t)) | 2042 | (add-text-properties opos (point) `(ibuffer-title-header t)) |
| 2019 | (insert "\n") | 2043 | (insert "\n") |
| 2020 | ;; Add the underlines | 2044 | ;; Add the underlines |