Function: set-keymap-parent
set-keymap-parent is a function defined in keymap.c.
Signature
(set-keymap-parent KEYMAP PARENT)
Documentation
Modify KEYMAP to set its parent map to PARENT.
Return PARENT. PARENT should be nil or another keymap.
Probably introduced at or before Emacs version 19.32.
Source Code
// Defined in /usr/src/emacs/src/keymap.c
{
/* Flush any reverse-map cache. */
where_is_cache = Qnil; where_is_cache_keymaps = Qt;
keymap = get_keymap (keymap, 1, 1);
if (!NILP (parent))
{
parent = get_keymap (parent, 1, 0);
/* Check for cycles. */
if (keymap_memberp (keymap, parent))
error ("Cyclic keymap inheritance");
}
/* Skip past the initial element `keymap'. */
Lisp_Object prev = keymap;
while (1)
{
Lisp_Object list = XCDR (prev);
/* If there is a parent keymap here, replace it.
If we came to the end, add the parent in PREV. */
if (!CONSP (list) || KEYMAPP (list))
{
CHECK_IMPURE (prev, XCONS (prev));
XSETCDR (prev, parent);
return parent;
}
prev = list;
}
}