aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Nicolaescu2006-04-02 19:17:34 +0000
committerDan Nicolaescu2006-04-02 19:17:34 +0000
commitf0b315896ca8aa8c0113753bb1b3e1965d2153b4 (patch)
tree474f14d3f61a6df904380052b17de011e421fa58
parent5af68e282f359dbe09565f690d3f6920a593fb0e (diff)
downloademacs-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/ChangeLog12
-rw-r--r--lisp/ibuf-macs.el5
-rw-r--r--lisp/ibuffer.el36
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 @@
12006-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
12006-04-02 Drew Adams <drew.adams@oracle.com> (tiny change) 132006-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
82BODY will be called with `buffer' bound to the buffer object, and 82BODY 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