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.
This commit is contained in:
parent
090060a72c
commit
4a2092efd2
2 changed files with 27 additions and 3 deletions
|
@ -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
|
||||
|
|
14
src/keymap.c
14
src/keymap.c
|
@ -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. */)
|
||||
|
|
Loading…
Add table
Reference in a new issue