changeset 107902:b211643f088b

* tmm.el: Add missing key-binding shortcuts. (tmm-prompt): Remove obsolete call to x-popup-menu. (tmm-get-keymap): Add key-binding shortcuts now that they're not available in the "keyseq cache" any more.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Mon, 19 Apr 2010 10:34:01 -0400
parents 4d83f7e28a99
children c168d4537385
files lisp/ChangeLog lisp/tmm.el
diffstat 2 files changed, 22 insertions(+), 22 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Mon Apr 19 16:17:44 2010 +0300
+++ b/lisp/ChangeLog	Mon Apr 19 10:34:01 2010 -0400
@@ -1,5 +1,9 @@
 2010-04-19  Stefan Monnier  <monnier@iro.umontreal.ca>
 
+	* tmm.el (tmm-prompt): Remove obsolete call to x-popup-menu.
+	(tmm-get-keymap): Add key-binding shortcuts now that they're not
+	available in the "keyseq cache" any more.
+
 	* custom.el (defcustom): Add edebug spec.
 
 2010-04-18  Juri Linkov  <juri@jurta.org>
--- a/lisp/tmm.el	Mon Apr 19 16:17:44 2010 +0300
+++ b/lisp/tmm.el	Mon Apr 19 10:34:01 2010 -0400
@@ -262,9 +262,6 @@
 	   (condition-case nil
 	       (require 'mouse)
 	     (error nil))
-	   (condition-case nil
-	       (x-popup-menu nil choice) ; Get the shortcuts
-	     (error nil))
 	   (tmm-prompt choice))
 	  ;; We just handled a menu keymap and found a command.
 	  (choice
@@ -445,7 +442,7 @@
 `x-popup-menu' argument (when IN-X-MENU is not-nil).
 This function adds the element only if it is not already present.
 It uses the free variable `tmm-table-undef' to keep undefined keys."
-  (let (km str cache plist filter visible enable (event (car elt)))
+  (let (km str plist filter visible enable (event (car elt)))
     (setq elt (cdr elt))
     (if (eq elt 'undefined)
 	(setq tmm-table-undef (cons (cons event nil) tmm-table-undef))
@@ -468,11 +465,7 @@
 		 (and (symbolp (cdr-safe (cdr-safe elt)))
 			       (fboundp (cdr-safe (cdr-safe elt)))))
 	       (setq km (cddr elt))
-	       (and (stringp (car elt)) (setq str (car elt)))
-	       (and str
-		    (stringp (cdr-safe (cadr elt))) ; keyseq cache
-		    (setq cache (cdr (cadr elt)))
-		    cache (setq str (concat str cache))))
+	       (and (stringp (car elt)) (setq str (car elt))))
 
 	      ((eq (car-safe elt) 'menu-item)
 	       ;; (menu-item TITLE COMMAND KEY ...)
@@ -489,13 +482,7 @@
 		   (setq km (and (eval visible) km)))
 	       (setq enable (plist-get plist :enable))
 	       (if enable
-                   (setq km (if (eval enable) km 'ignore)))
-	       (and str
-		    (consp (nth 3 elt))
-		    (stringp (cdr (nth 3 elt))) ; keyseq cache
-		    (setq cache (cdr (nth 3 elt)))
-		    cache
-		    (setq str (concat str cache))))
+                   (setq km (if (eval enable) km 'ignore))))
 
 	      ((if (listp (cdr-safe (cdr-safe (cdr-safe elt))))
 		   (or (keymapp (cdr-safe (cdr-safe (cdr-safe elt))))
@@ -504,16 +491,25 @@
 		      (fboundp (cdr-safe (cdr-safe (cdr-safe elt))))))
 					 ; New style of easy-menu
 	       (setq km (cdr (cddr elt)))
-	       (and (stringp (car elt)) (setq str (car elt)))
-	       (and str
-		    (stringp (cdr-safe (car (cddr elt)))) ; keyseq cache
-		    (setq cache (cdr (car (cdr (cdr elt)))))
-		    cache (setq str (concat str cache))))
+	       (and (stringp (car elt)) (setq str (car elt))))
 
 	      ((stringp event)		; x-popup or x-popup element
 	       (if (or in-x-menu (stringp (car-safe elt)))
 		   (setq str event event nil km elt)
-		 (setq str event event nil km (cons 'keymap elt))))))
+		 (setq str event event nil km (cons 'keymap elt)))))
+        (unless (eq km 'ignore)
+          (let ((binding (where-is-internal km nil t)))
+            (when binding
+              (setq binding (key-description binding))
+              ;; Try to align the keybindings.
+              (let ((colwidth (min 30 (- (/ (window-width) 2) 10))))
+                (setq str
+                      (concat str
+                              (make-string (max 2 (- colwidth
+                                                     (string-width str)
+                                                     (string-width binding)))
+                                           ?\s)
+                              binding)))))))
       (and km (stringp km) (setq str km))
       ;; Verify that the command is enabled;
       ;; if not, don't mention it.