(Fdescribe_buffer_bindings): Use SYMBOL_NAME and XSTRING instead
of XSYMBOL and name field.
(describe_command, describe_translation): Use SYMBOL_NAME and
assignment instead of XSYMBOL and name field and XSETSTRING.
(Fkeymap_parent, keymap_memberp, fix_submap_inheritance): Use it.
(Fset_keymap_parent): Gcpro a bit more.
(access_keymap): Gcpro around meta_map call and around the main loop.
(get_keyelt): Gcpro when following indirect references.
(copy_keymap_item): New fun, extracted from Fcopy_keymap.
(copy_keymap_1, Fcopy_keymap): Use it. Don't copy the parent map.
(Fdefine_key, Flookup_key): Gcpro before calling get_keymap.
Remove useless ad-hoc remap code.
only update cmm_size if realloc actually succeeds.
Testing with initial size of 2 elements revealed that using
realloc on GNU/Linux would cause a random trap in xmalloc
later on, so I rewrote the code to use malloc/bcopy/free instead
of realloc.
(syms_of_keymap): DEFVAR_LISP it.
(current_minor_maps): Process keymap alists in that list before
minor-mode-overriding-map-alist and minor-mode-map-alist.
The validation of the event type was too strict as it didn't
allow string events; buffer names are used in bindings for
menu-bar-select-buffer (see `menu-bar-update-buffers').
added command remapping by entering the commands directly into
the keymaps. Now, command remapping uses an explicit `remap'
prefix in the keymaps, i.e. [remap COMMAND].
(Qremap, remap_command_vector): New variables.
(is_command_symbol): Removed function.
(Fdefine_key): No longer accept a symbol for KEY. Added
validation of [remap COMMAND] argument for KEY. The DEF is no
longer required to be a symbol when remapping a command.
(Fremap_command): New function to remap command through keymaps.
(Flookup_key): Perform command remapping initiated by
Fremap_command directly for speed.
(Fkey_binding): Use Fremap_command for command remapping.
(where_is_internal): Handle new command remapping representation.
(syms_of_keymap): Intern Qremap, initialize remap_command_vector,
staticpro them. Defsubr Fremap_command.
defining command remapping. Doc updated.
(Flookup_key): Remap command through keymap if KEY is a symbol.
(is_command_symbol): New function.
(Fkey_binding): Use it. New optional argument NO-REMAP. Doc
updated. Callers changed. Perform command remapping via
recursive call unless that arg is non-nil.
(where_is_internal): New argument no_remap. Callers changed.
Call recursively to find original key bindings for a remapped
comand unless that arg is non-nil.
(Fwhere_is_internal): New optional argument NO-REMAP. Doc
updated. Callers changed. Pass arg to where_is_internal.
(Fdefine_key): Add error message for trying to bind [DEL], [RET], etc.
(exclude_keys): New variable.
(Flookup_key): Error message if key has wrong data type.
(describe_command, describe_translation): Add dummy second param.
(describe_map): Call elt_describer with two arguments.
(describe_vector_princ): Add `fun' parameter.
Call it instead of the hardcoded `princ'.
(describe_vector): Add arg `args'.
Pass it as a new second argument to elt_describer.
(Fdescribe_bindings_internal, describe_buffer_bindings): Remove.
(syms_of_keymap): Setup inheritance between maps.
Don't export Sdescribe_bindings_internal any more.