changeset 5689:7371081ce8f7

Have command remapping work interactively too, thank you Robert Pluim! src/ChangeLog addition: 2012-10-14 Aidan Kehoe <kehoea@parhasard.net> Have command remapping work interactively too, thank you Robert Pluim. * event-stream.c (Fdispatch_event): Obey command remapping here, it wasn't done for us. * keymap.c: * keymap.c (command_remapping_for_event): New, needed to observe command remapping interactively. * lisp.h: Make it available. lisp/ChangeLog addition: 2012-10-14 Aidan Kehoe <kehoea@parhasard.net> * help.el: * help.el (describe-function-1): Add some newlines here when dealing with remapped commands, thank you Robert Pluim.
author Aidan Kehoe <kehoea@parhasard.net>
date Sun, 14 Oct 2012 22:10:39 +0100
parents b6c506c30f93
children 7b5f88e5b456
files lisp/ChangeLog lisp/help.el src/ChangeLog src/event-stream.c src/keymap.c src/lisp.h
diffstat 6 files changed, 47 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Sun Oct 14 16:14:25 2012 +0100
+++ b/lisp/ChangeLog	Sun Oct 14 22:10:39 2012 +0100
@@ -1,3 +1,10 @@
+2012-10-14  Aidan Kehoe  <kehoea@parhasard.net>
+
+	* help.el:
+	* help.el (describe-function-1):
+	Add some newlines here when dealing with remapped commands, thank
+	you Robert Pluim.
+
 2012-10-13  Mats Lidell  <matsl@xemacs.org>
 
 	* process.el (call-process-shell-command): New function from GNU.
--- a/lisp/help.el	Sun Oct 14 16:14:25 2012 +0100
+++ b/lisp/help.el	Sun Oct 14 22:10:39 2012 +0100
@@ -1544,10 +1544,10 @@
                                    (format "\n\\[%s]" function))))
                        (when commands-remapped-to
                          (if (cdr commands-remapped-to)
-                             (princ (format "The following functions are \
+                             (princ (format "\n\nThe following functions are \
 remapped to it:\n`%s'" (mapconcat #'prin1-to-string commands-remapped-to
                                   "', `")))
-                           (princ (format "`%s' is remapped to it.\n"
+                           (princ (format "\n\n`%s' is remapped to it.\n"
                                           (car
                                            commands-remapped-to))))))))))))))
 
--- a/src/ChangeLog	Sun Oct 14 16:14:25 2012 +0100
+++ b/src/ChangeLog	Sun Oct 14 22:10:39 2012 +0100
@@ -1,3 +1,14 @@
+2012-10-14  Aidan Kehoe  <kehoea@parhasard.net>
+
+	Have command remapping work interactively too, thank you Robert
+	Pluim.
+	* event-stream.c (Fdispatch_event):
+	Obey command remapping here, it wasn't done for us.
+	* keymap.c:
+	* keymap.c (command_remapping_for_event): New, needed to observe
+	command remapping interactively.
+	* lisp.h: Make it available.
+
 2012-10-14  Aidan Kehoe  <kehoea@parhasard.net>
 
 	Respect face and display table information in the minibuffer
--- a/src/event-stream.c	Sun Oct 14 16:14:25 2012 +0100
+++ b/src/event-stream.c	Sun Oct 14 22:10:39 2012 +0100
@@ -4550,8 +4550,6 @@
 	    int magic_undo = 0;
 	    Elemcount magic_undo_count = 20;
 
-	    Vthis_command = leaf;
-
 	    /* Don't push an undo boundary if the command set the prefix arg,
 	       or if we are executing a keyboard macro, or if in the
 	       minibuffer.  If the command we are about to execute is
@@ -4567,6 +4565,8 @@
 	    if (SYMBOLP (leaf))
 	      {
 		Lisp_Object prop = Fget (leaf, Qself_insert_defer_undo, Qnil);
+                Lisp_Object remap = Qnil;
+
 		if (NATNUMP (prop))
                   {
                     magic_undo = 1;
@@ -4587,8 +4587,16 @@
 		  magic_undo = 1;
 		else if (EQ (leaf, Qself_insert_command))
 		  magic_undo = 1;
+
+                remap = command_remapping_for_event (leaf, event);
+                if (!NILP (remap))
+                  {
+                    leaf = remap;
+                  }
 	      }
 
+	    Vthis_command = leaf;
+
 	    if (!magic_undo)
 	      command_builder->self_insert_countdown = 0;
 	    if (NILP (XCONSOLE (console)->prefix_arg)
--- a/src/keymap.c	Sun Oct 14 16:14:25 2012 +0100
+++ b/src/keymap.c	Sun Oct 14 22:10:39 2012 +0100
@@ -2127,6 +2127,20 @@
   return Qnil;
 }
 
+Lisp_Object
+command_remapping_for_event (Lisp_Object command, Lisp_Object event0)
+{
+  /* This function can GC */
+  Lisp_Object maps[100];
+  int nmaps;
+
+  nmaps = get_relevant_keymaps (event0, Qnil, countof (maps), maps);
+  if (nmaps > countof (maps))
+    nmaps = countof (maps);
+
+  return command_remapping (command, nmaps, maps);
+}                             
+
 DEFUN ("command-remapping", Fcommand_remapping, 1, 3, 0, /*
 Return the remapping for command COMMAND.
 
--- a/src/lisp.h	Sun Oct 14 16:14:25 2012 +0100
+++ b/src/lisp.h	Sun Oct 14 22:10:39 2012 +0100
@@ -5473,6 +5473,9 @@
 EXFUN (Fmake_sparse_keymap, 1);
 EXFUN (Fset_keymap_parents, 2);
 
+Lisp_Object command_remapping_for_event (Lisp_Object command,
+                                         Lisp_Object event0);
+
 void where_is_to_char (Lisp_Object, Eistring *);
 
 /* Defined in lread.c */