633 |
(insert m2))) |
(insert m2))) |
634 |
(forward-line))))) |
(forward-line))))) |
635 |
|
|
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 |
|
|
659 |
(defun Buffer-menu-make-sort-button (name column) |
(defun Buffer-menu-make-sort-button (name column) |
660 |
(if (equal column Buffer-menu-sort-column) (setq column nil)) |
(if (equal column Buffer-menu-sort-column) (setq column nil)) |
661 |
(let* ((downname (downcase name)) |
(propertize name |
662 |
(map (make-sparse-keymap)) |
'column column |
663 |
(fun `(lambda (&optional e) |
'help-echo (concat |
664 |
,(concat "Sort the buffer menu by " downname ".") |
(if Buffer-menu-use-header-line |
665 |
(interactive (list last-input-event)) |
"mouse-1, mouse-2: sort by " |
666 |
(if e (mouse-select-window e)) |
"mouse-2, RET: sort by ") |
667 |
(Buffer-menu-sort ,column))) |
(if column (downcase name) "visited order")) |
668 |
(sym (intern (format "Buffer-menu-sort-by-%s-%s" name column)))) |
'mouse-face 'highlight |
669 |
;; Use a symbol rather than an anonymous function, to make the output of |
'keymap Buffer-menu-sort-button-map)) |
|
;; C-h k less intimidating. |
|
|
(fset sym fun) |
|
|
(setq fun sym) |
|
|
;; This keymap handles both nil and non-nil |
|
|
;; values for Buffer-menu-use-header-line. |
|
|
(define-key map [header-line mouse-1] fun) |
|
|
(define-key map [header-line mouse-2] fun) |
|
|
(define-key map [mouse-2] fun) |
|
|
(define-key map [follow-link] 'mouse-face) |
|
|
(define-key map "\C-m" fun) |
|
|
(propertize name |
|
|
'help-echo (concat |
|
|
(if Buffer-menu-use-header-line |
|
|
"mouse-1, mouse-2: sort by " |
|
|
"mouse-2, RET: sort by ") |
|
|
;; No clue what this is for, but I preserved the |
|
|
;; behavior, just in case. --Stef |
|
|
(if column downname "visited order")) |
|
|
'mouse-face 'highlight |
|
|
'keymap map))) |
|
670 |
|
|
671 |
(defun list-buffers-noselect (&optional files-only buffer-list) |
(defun list-buffers-noselect (&optional files-only buffer-list) |
672 |
"Create and return a buffer with a list of names of existing buffers. |
"Create and return a buffer with a list of names of existing buffers. |