# HG changeset patch # User Dan Nicolaescu # Date 1144005454 0 # Node ID 986a4b641e9e93ef35efa63a1cf76cafeda5d949 # Parent 6c338e8bc3ff26271c997057527437639bcd313e * 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) : Add a header-mouse-map property. diff -r 6c338e8bc3ff -r 986a4b641e9e lisp/ChangeLog --- a/lisp/ChangeLog Sun Apr 02 01:08:04 2006 +0000 +++ b/lisp/ChangeLog Sun Apr 02 19:17:34 2006 +0000 @@ -1,3 +1,15 @@ +2006-04-02 Dan Nicolaescu + + * 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) : Add a header-mouse-map + property. + 2006-04-02 Drew Adams (tiny change) * speedbar.el (speedbar-after-create-hook): Doc fix. diff -r 6c338e8bc3ff -r 986a4b641e9e lisp/ibuf-macs.el --- a/lisp/ibuf-macs.el Sun Apr 02 01:08:04 2006 +0000 +++ b/lisp/ibuf-macs.el Sun Apr 02 19:17:34 2006 +0000 @@ -75,8 +75,8 @@ ;; (put 'ibuffer-save-marks 'lisp-indent-function 0) ;;;###autoload -(defmacro* define-ibuffer-column (symbol (&key name inline props - summarizer) &rest body) +(defmacro* define-ibuffer-column (symbol (&key name inline props summarizer + header-mouse-map) &rest body) "Define a column SYMBOL for use with `ibuffer-formats'. BODY will be called with `buffer' bound to the buffer object, and @@ -115,6 +115,7 @@ ,(if (stringp name) name (capitalize (symbol-name symbol)))) + ,(if header-mouse-map `(put (quote ,sym) 'header-mouse-map ,header-mouse-map)) ,(if summarizer ;; Store the name of the summarizing function. `(put (quote ,sym) 'ibuffer-column-summarizer diff -r 6c338e8bc3ff -r 986a4b641e9e lisp/ibuffer.el --- a/lisp/ibuffer.el Sun Apr 02 01:08:04 2006 +0000 +++ b/lisp/ibuffer.el Sun Apr 02 19:17:34 2006 +0000 @@ -829,6 +829,21 @@ (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 @@ (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 @@ (define-ibuffer-column size (:inline t + :header-mouse-map ibuffer-size-header-map :summarizer (lambda (column-strings) (let ((total 0)) @@ -1695,6 +1712,7 @@ (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 @@ (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