Commit 4a2092ef authored by Stefan Monnier's avatar Stefan Monnier

Advertize set-keymap-parent as replacement for copy-keymap

* doc/lispref/keymaps.texi (Creating Keymaps):
* src/keymap.c (Fcopy_keymap): Advertize set-keymap-parent as replacement.
parent 090060a7
......@@ -341,7 +341,21 @@ lots of bindings; for just a few, the sparse keymap is better.
@end defun
@defun copy-keymap keymap
This function returns a copy of @var{keymap}. Any keymaps that
This function returns a copy of @var{keymap}. This is almost never
needed. If you want a keymap that's like another yet with a few
changes, you should use map inheritance rather than copying.
I.e., something like:
@example
@group
(let ((map (make-sparse-keymap)))
(set-keymap-parent map <theirmap>)
(define-key map ...)
...)
@end group
@end example
When performing @code{copy-keymap}, any keymaps that
appear directly as bindings in @var{keymap} are also copied recursively,
and so on to any number of levels. However, recursive copying does not
take place when the definition of a character is a symbol whose function
......
......@@ -971,8 +971,18 @@ copy_keymap_1 (Lisp_Object chartable, Lisp_Object idx, Lisp_Object elt)
DEFUN ("copy-keymap", Fcopy_keymap, Scopy_keymap, 1, 1, 0,
doc: /* Return a copy of the keymap KEYMAP.
The copy starts out with the same definitions of KEYMAP,
but changing either the copy or KEYMAP does not affect the other.
Note that this is almost never needed. If you want a keymap that's like
another yet with a few changes, you should use map inheritance rather
than copying. I.e. something like:
(let ((map (make-sparse-keymap)))
(set-keymap-parent map <theirmap>)
(define-key map ...)
...)
After performing `copy-keymap', the copy starts out with the same definitions
of KEYMAP, but changing either the copy or KEYMAP does not affect the other.
Any key definitions that are subkeymaps are recursively copied.
However, a key definition which is a symbol whose definition is a keymap
is not copied. */)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment