| | 636 | (defun Buffer-menu-sort-by-column (&optional e) |
|---|
| | 637 | "Sort the buffer menu by the column clicked on." |
|---|
| | 638 | (interactive (list last-input-event)) |
|---|
| | 639 | (if e (mouse-select-window e)) |
|---|
| | 640 | (let* ((pos (event-start e)) |
|---|
| | 641 | (obj (posn-object pos)) |
|---|
| | 642 | (col (if obj |
|---|
| | 643 | (get-text-property (cdr obj) 'column (car obj)) |
|---|
| | 644 | (get-text-property (posn-point pos) 'column)))) |
|---|
| | 645 | (Buffer-menu-sort col))) |
|---|
| | 646 | |
|---|
| | 647 | (defvar Buffer-menu-sort-button-map |
|---|
| | 648 | (let ((map (make-sparse-keymap))) |
|---|
| | 649 | ;; This keymap handles both nil and non-nil values for |
|---|
| | 650 | ;; Buffer-menu-use-header-line. |
|---|
| | 651 | (define-key map [header-line mouse-1] 'Buffer-menu-sort-by-column) |
|---|
| | 652 | (define-key map [header-line mouse-2] 'Buffer-menu-sort-by-column) |
|---|
| | 653 | (define-key map [mouse-2] 'Buffer-menu-sort-by-column) |
|---|
| | 654 | (define-key map [follow-link] 'mouse-face) |
|---|
| | 655 | (define-key map "\C-m" 'Buffer-menu-sort-by-column) |
|---|
| | 656 | map) |
|---|
| | 657 | "Local keymap for Buffer menu sort buttons.") |
|---|
| | 658 | |
|---|
| 639 | | 'help-echo (if column |
|---|
| 640 | | (if Buffer-menu-use-header-line |
|---|
| 641 | | (concat "mouse-2: sort by " (downcase name)) |
|---|
| 642 | | (concat "mouse-2, RET: sort by " |
|---|
| 643 | | (downcase name))) |
|---|
| 644 | | (if Buffer-menu-use-header-line |
|---|
| 645 | | "mouse-2: sort by visited order" |
|---|
| 646 | | "mouse-2, RET: sort by visited order")) |
|---|
| | 662 | 'column column |
|---|
| | 663 | 'help-echo (concat |
|---|
| | 664 | (if Buffer-menu-use-header-line |
|---|
| | 665 | "mouse-1, mouse-2: sort by " |
|---|
| | 666 | "mouse-2, RET: sort by ") |
|---|
| | 667 | (if column (downcase name) "visited order")) |
|---|
| 648 | | 'keymap (let ((map (make-sparse-keymap))) |
|---|
| 649 | | (if Buffer-menu-use-header-line |
|---|
| 650 | | (define-key map [header-line mouse-2] |
|---|
| 651 | | `(lambda (e) |
|---|
| 652 | | (interactive "e") |
|---|
| 653 | | (save-window-excursion |
|---|
| 654 | | (if e (mouse-select-window e)) |
|---|
| 655 | | (Buffer-menu-sort ,column)))) |
|---|
| 656 | | (define-key map [mouse-2] |
|---|
| 657 | | `(lambda (e) |
|---|
| 658 | | (interactive "e") |
|---|
| 659 | | (if e (mouse-select-window e)) |
|---|
| 660 | | (Buffer-menu-sort ,column))) |
|---|
| 661 | | (define-key map "\C-m" |
|---|
| 662 | | `(lambda () (interactive) |
|---|
| 663 | | (Buffer-menu-sort ,column)))) |
|---|
| 664 | | map))) |
|---|
| | 669 | 'keymap Buffer-menu-sort-button-map)) |
|---|