# HG changeset patch # User Aidan Kehoe # Date 1350249039 -3600 # Node ID 7371081ce8f743a2fcd6651b77b5236d4cb05f16 # Parent b6c506c30f93e8b9f06c6b9e5d6d0dcc9cd3f5c3 Have command remapping work interactively too, thank you Robert Pluim! src/ChangeLog addition: 2012-10-14 Aidan Kehoe 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 * help.el: * help.el (describe-function-1): Add some newlines here when dealing with remapped commands, thank you Robert Pluim. diff -r b6c506c30f93 -r 7371081ce8f7 lisp/ChangeLog --- 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 + + * 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 * process.el (call-process-shell-command): New function from GNU. diff -r b6c506c30f93 -r 7371081ce8f7 lisp/help.el --- 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)))))))))))))) diff -r b6c506c30f93 -r 7371081ce8f7 src/ChangeLog --- 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 + + 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 Respect face and display table information in the minibuffer diff -r b6c506c30f93 -r 7371081ce8f7 src/event-stream.c --- 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) diff -r b6c506c30f93 -r 7371081ce8f7 src/keymap.c --- 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. diff -r b6c506c30f93 -r 7371081ce8f7 src/lisp.h --- 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 */