]> git.eshelyaron.com Git - emacs.git/commitdiff
*** empty log message ***
authorChong Yidong <cyd@stupidchicken.com>
Wed, 7 Sep 2005 18:48:34 +0000 (18:48 +0000)
committerChong Yidong <cyd@stupidchicken.com>
Wed, 7 Sep 2005 18:48:34 +0000 (18:48 +0000)
lisp/ChangeLog
lisp/buff-menu.el

index 2143bc17cf301167cd0c894a6dff6ae08bc3e9b5..bd0c2e87e7072a7326c99fea1207dabe0d283acf 100644 (file)
@@ -1,3 +1,10 @@
+2005-09-08  Chong Yidong  <cyd@stupidchicken.com>
+
+       * buff-menu.el (Buffer-menu-sort-by-column): New function.
+       Suggested by Kim F. Storm.
+       (Buffer-menu-sort-button-map): Global keymap for sort buttons.
+       (Buffer-menu-make-sort-button): Use global keymap.
+
 2005-09-06  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * buff-menu.el (Buffer-menu-make-sort-button): Add docstrings, use
index 18ba3bf25cacac920ec4b42907681fd63e8518b4..4c45847df0f4d1953ed18b4996272569da29cae6 100644 (file)
@@ -633,37 +633,40 @@ For more information, see the function `buffer-menu'."
            (insert m2)))
        (forward-line)))))
 
+(defun Buffer-menu-sort-by-column (&optional e)
+  "Sort the buffer menu by the column clicked on."
+  (interactive (list last-input-event))
+  (if e (mouse-select-window e))
+  (let* ((pos (event-start e))
+        (obj (posn-object pos))
+        (col (if obj
+                 (get-text-property (cdr obj) 'column (car obj))
+               (get-text-property (posn-point pos) 'column))))
+    (Buffer-menu-sort col)))
+
+(defvar Buffer-menu-sort-button-map
+  (let ((map (make-sparse-keymap)))
+    ;; This keymap handles both nil and non-nil values for
+    ;; Buffer-menu-use-header-line.
+    (define-key map [header-line mouse-1] 'Buffer-menu-sort-by-column)
+    (define-key map [header-line mouse-2] 'Buffer-menu-sort-by-column)
+    (define-key map [mouse-2] 'Buffer-menu-sort-by-column)
+    (define-key map [follow-link] 'mouse-face)
+    (define-key map "\C-m" 'Buffer-menu-sort-by-column)
+    map)
+  "Local keymap for Buffer menu sort buttons.")
+
 (defun Buffer-menu-make-sort-button (name column)
   (if (equal column Buffer-menu-sort-column) (setq column nil))
-  (let* ((downname (downcase name))
-         (map (make-sparse-keymap))
-         (fun `(lambda (&optional e)
-                 ,(concat "Sort the buffer menu by " downname ".")
-                 (interactive (list last-input-event))
-                 (if e (mouse-select-window e))
-                 (Buffer-menu-sort ,column)))
-         (sym (intern (format "Buffer-menu-sort-by-%s-%s" name column))))
-    ;; Use a symbol rather than an anonymous function, to make the output of
-    ;; 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)))
+  (propertize name
+             'column column
+             'help-echo (concat
+                         (if Buffer-menu-use-header-line
+                             "mouse-1, mouse-2: sort by "
+                           "mouse-2, RET: sort by ")
+                         (if column (downcase name) "visited order"))
+             'mouse-face 'highlight
+             'keymap Buffer-menu-sort-button-map))
 
 (defun list-buffers-noselect (&optional files-only buffer-list)
   "Create and return a buffer with a list of names of existing buffers.