[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

22.11 Scanning Keymaps

This section describes functions used to scan all the current keymaps for the sake of printing help information.

Function: accessible-keymaps keymap &optional prefix
This function returns a list of all the keymaps that can be reached (via zero or more prefix keys) from keymap. The value is an association list with elements of the form (key . map), where key is a prefix key whose definition in keymap is map.

The elements of the alist are ordered so that the key increases in length. The first element is always ("" . keymap), because the specified keymap is accessible from itself with a prefix of no events.

If prefix is given, it should be a prefix key sequence; then accessible-keymaps includes only the submaps whose prefixes start with prefix. These elements look just as they do in the value of (accessible-keymaps); the only difference is that some elements are omitted.

In the example below, the returned alist indicates that the key ESC, which is displayed as `^[', is a prefix key whose definition is the sparse keymap (keymap (83 . center-paragraph) (115 . foo)).

 
(accessible-keymaps (current-local-map))
=>(("" keymap 
      (27 keymap   ; Note this keymap for ESC is repeated below.
          (83 . center-paragraph)
          (115 . center-line))
      (9 . tab-to-tab-stop))

   ("^[" keymap 
    (83 . center-paragraph) 
    (115 . foo)))

In the following example, C-h is a prefix key that uses a sparse keymap starting with (keymap (118 . describe-variable)...). Another prefix, C-x 4, uses a keymap which is also the value of the variable ctl-x-4-map. The event mode-line is one of several dummy events used as prefixes for mouse actions in special parts of a window.

 
(accessible-keymaps (current-global-map))
=> (("" keymap [set-mark-command beginning-of-line ... 
                   delete-backward-char])
    ("^H" keymap (118 . describe-variable) ...
     (8 . help-for-help))
    ("^X" keymap [x-flush-mouse-queue ...
     backward-kill-sentence])
    ("^[" keymap [mark-sexp backward-sexp ...
     backward-kill-word])
    ("^X4" keymap (15 . display-buffer) ...)
    ([mode-line] keymap
     (S-mouse-2 . mouse-split-window-horizontally) ...))

These are not all the keymaps you would see in actuality.

Function: where-is-internal command &optional keymap firstonly noindirect
This function is a subroutine used by the where-is command (see section `Help' in The GNU Emacs Manual). It returns a list of key sequences (of any length) that are bound to command in a set of keymaps.

The argument command can be any object; it is compared with all keymap entries using eq.

If keymap is nil, then the maps used are the current active keymaps, disregarding overriding-local-map (that is, pretending its value is nil). If keymap is non-nil, then the maps searched are keymap and the global keymap. If keymap is a list of keymaps, only those keymaps are searched.

Usually it's best to use overriding-local-map as the expression for keymap. Then where-is-internal searches precisely the keymaps that are active. To search only the global map, pass (keymap) (an empty keymap) as keymap.

If firstonly is non-ascii, then the value is a single string representing the first key sequence found, rather than a list of all possible key sequences. If firstonly is t, then the value is the first key sequence, except that key sequences consisting entirely of ASCII characters (or meta variants of ASCII characters) are preferred to all other key sequences.

If noindirect is non-nil, where-is-internal doesn't follow indirect keymap bindings. This makes it possible to search for an indirect definition itself.

 
(where-is-internal 'describe-function)
    => ("\^hf" "\^hd")

Command: describe-bindings &optional prefix
This function creates a listing of all current key bindings, and displays it in a buffer named `*Help*'. The text is grouped by modes--minor modes first, then the major mode, then global bindings.

If prefix is non-nil, it should be a prefix key; then the listing includes only keys that start with prefix.

The listing describes meta characters as ESC followed by the corresponding non-meta character.

When several characters with consecutive ASCII codes have the same definition, they are shown together, as `firstchar..lastchar'. In this instance, you need to know the ASCII codes to understand which characters this means. For example, in the default global map, the characters `SPC .. ~' are described by a single line. SPC is ASCII 32, ~ is ASCII 126, and the characters between them include all the normal printing characters, (e.g., letters, digits, punctuation, etc.); all these characters are bound to self-insert-command.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

This document was generated on May 2, 2002 using texi2html