From 775ab3953f56703789d1666bf16aa7c381edb835 Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Mon, 23 Apr 2012 11:44:13 +0800 Subject: [PATCH] Fix last fix. --- doc/lispref/keymaps.texi | 43 ++++++++++++++++++++----------------------- src/keymap.c | 21 +++++++++++---------- 2 files changed, 31 insertions(+), 33 deletions(-) diff --git a/doc/lispref/keymaps.texi b/doc/lispref/keymaps.texi index f67174b6a52..c44512b8807 100644 --- a/doc/lispref/keymaps.texi +++ b/doc/lispref/keymaps.texi @@ -1888,9 +1888,9 @@ maps searched are @var{keymap} and the global keymap. If @var{keymap} is a list of keymaps, only those keymaps are searched. Usually it's best to use @code{overriding-local-map} as the expression -for @var{keymap}. Then @code{where-is-internal} searches precisely the -keymaps that are active. To search only the global map, pass -@code{(keymap)} (an empty keymap) as @var{keymap}. +for @var{keymap}. Then @code{where-is-internal} searches precisely +the keymaps that are active. To search only the global map, pass the +value @code{(keymap)} (an empty keymap) as @var{keymap}. If @var{firstonly} is @code{non-ascii}, then the value is a single vector representing the first key sequence found, rather than a list of @@ -1904,27 +1904,24 @@ If @var{noindirect} is non-@code{nil}, @code{where-is-internal} doesn't follow indirect keymap bindings. This makes it possible to search for an indirect definition itself. -If another command @var{other-command} is remapped to @var{command} -(@pxref{Remapping Commands}), this function searches for the bindings -of @var{other-command} and treats them as though they are also -bindings for @var{command}. But if the @var{no-remap} argument is -non-@code{nil}, this function instead includes the vector @code{[remap -@var{other-command}]} in the list of possible key sequences, without -searching for the bindings of @var{other-command}. +The fifth argument, @var{no-remap}, determines how this function +treats command remappings (@pxref{Remapping Commands}). There are two +cases of interest: -On the other hand, if @var{command} is remapped to another command, -this function still returns the original bindings of @var{command}, -even though those keys would actually invoke the other command. To -determine the remapping status of @var{command}, use the function -@code{command-remapping} (@pxref{Remapping Commands}). - -@smallexample -@group -(where-is-internal 'describe-function) - @result{} ([8 102] [f1 102] [help 102] - [menu-bar help-menu describe describe-function]) -@end group -@end smallexample +@table @asis +@item If a command @var{other-command} is remapped to @var{command}: +If @var{no-remap} is @code{nil}, find the bindings for +@var{other-command} and treat them as though they are also bindings +for @var{command}. If @var{no-remap} is non-@code{nil}, include the +vector @code{[remap @var{other-command}]} in the list of possible key +sequences, instead of finding those bindings. + +@item If @var{command} is remapped to @var{other-command}: +If @var{no-remap} is @code{nil}, return the bindings for +@var{other-command} rather than @var{command}. If @var{no-remap} is +non-@code{nil}, return the bindings for @var{command}, ignoring the +fact that it is remapped. +@end table @end defun @deffn Command describe-bindings &optional prefix buffer-or-name diff --git a/src/keymap.c b/src/keymap.c index 3528a61d6ea..9f82175edc0 100644 --- a/src/keymap.c +++ b/src/keymap.c @@ -2569,16 +2569,17 @@ If optional 4th arg NOINDIRECT is non-nil, don't follow indirections to other keymaps or slots. This makes it possible to search for an indirect definition itself. -If another command OTHER-COMMAND is remapped to DEFINITION, search for -the bindings of OTHER-COMMAND and include them in the returned list. -But if optional 5th arg NO-REMAP is non-nil, just include the vector -[remap OTHER-COMMAND] in the returned list, without searching for -those other bindings. - -If DEFINITION is remapped to another command, this function still -returns its bindings, even though those key sequences actually invoke -the other command. Use `command-remapping' to find the remapping -status of DEFINITION. */) +The optional 5th arg NO-REMAP alters how command remapping is handled: + +- If another command OTHER-COMMAND is remapped to DEFINITION, normally + search for the bindings of OTHER-COMMAND and include them in the + returned list. But if NO-REMAP is non-nil, include the vector + [remap OTHER-COMMAND] in the returned list instead, without + searching for those other bindings. + +- If DEFINITION is remapped to OTHER-COMMAND, normally return the + bindings for OTHER-COMMAND. But if NO-REMAP is non-nil, return the + bindings for DEFINITION instead, ignoring its remapping. */) (Lisp_Object definition, Lisp_Object keymap, Lisp_Object firstonly, Lisp_Object noindirect, Lisp_Object no_remap) { /* The keymaps in which to search. */ -- 2.11.4.GIT