diff options
author | Dan Nicolaescu <dann@ics.uci.edu> | 2006-04-02 19:17:34 +0000 |
---|---|---|
committer | Dan Nicolaescu <dann@ics.uci.edu> | 2006-04-02 19:17:34 +0000 |
commit | f0b315896ca8aa8c0113753bb1b3e1965d2153b4 (patch) | |
tree | 474f14d3f61a6df904380052b17de011e421fa58 /lisp/ibuffer.el | |
parent | 5af68e282f359dbe09565f690d3f6920a593fb0e (diff) | |
download | emacs-f0b315896ca8aa8c0113753bb1b3e1965d2153b4.tar.gz emacs-f0b315896ca8aa8c0113753bb1b3e1965d2153b4.tar.bz2 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.
Diffstat (limited to 'lisp/ibuffer.el')
-rw-r--r-- | lisp/ibuffer.el | 36 |
1 files changed, 30 insertions, 6 deletions
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'." (define-key map (kbd "RET") 'ibuffer-interactive-filter-by-mode) map)) +(defvar ibuffer-name-header-map + (let ((map (make-sparse-keymap))) + (define-key map [(mouse-1)] 'ibuffer-do-sort-by-alphabetic) + map)) + +(defvar ibuffer-size-header-map + (let ((map (make-sparse-keymap))) + (define-key map [(mouse-1)] 'ibuffer-do-sort-by-size) + map)) + +(defvar ibuffer-mode-header-map + (let ((map (make-sparse-keymap))) + (define-key map [(mouse-1)] 'ibuffer-do-sort-by-major-mode) + map)) + (defvar ibuffer-mode-filter-group-map (let ((map (make-sparse-keymap))) (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." (define-ibuffer-column name (:inline t + :header-mouse-map ibuffer-name-header-map :props ('mouse-face 'highlight 'keymap ibuffer-name-map 'ibuffer-name-column t @@ -1682,6 +1698,7 @@ If point is on a group name, this function operates on that group." (define-ibuffer-column size (:inline t + :header-mouse-map ibuffer-size-header-map :summarizer (lambda (column-strings) (let ((total 0)) @@ -1695,6 +1712,7 @@ If point is on a group name, this function operates on that group." (define-ibuffer-column mode (:inline t + :header-mouse-map ibuffer-mode-header-map :props ('mouse-face 'highlight 'keymap ibuffer-mode-name-map @@ -2009,12 +2027,18 @@ the value of point at the beginning of the line for that buffer." (setq min (- min))) (let* ((name (or (get sym 'ibuffer-column-name) (error "Unknown column %s in ibuffer-formats" sym))) - (len (length name))) - (if (< len min) - (ibuffer-format-column name - (- min len) - align) - name)))))) + (len (length name)) + (hmap (get sym 'header-mouse-map)) + (strname (if (< len min) + (ibuffer-format-column name + (- min len) + align) + name))) + (when hmap + (setq + strname + (propertize strname 'mouse-face 'highlight 'keymap hmap))) + strname))))) (add-text-properties opos (point) `(ibuffer-title-header t)) (insert "\n") ;; Add the underlines |