+2002-02-23 Kim F. Storm <no-spam@cua.dk>
+
+ The following changes rework my patch of 2002-02-06 which
+ 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].
+
+ * keymap.c (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.
+
+ * keymap.h (Fremap_command): Declare extern.
+ (is_command_symbol): Remove extern.
+
+ * keyboard.c (command_loop_1): Use Fremap_command for command
+ remapping; now try command remapping for all symbols.
+
2002-02-23 Eli Zaretskii <eliz@is.elta.co.il>
* coding.h (run_pre_post_conversion_on_str): Add prototype.
/* Remap command through active keymaps */
Vthis_original_command = cmd;
- if (is_command_symbol (cmd))
+ if (SYMBOLP (cmd))
{
Lisp_Object cmd1;
-
- cmd1 = Fkey_binding (cmd, Qnil, Qt);
- if (!NILP (cmd1) && is_command_symbol (cmd1))
+ if (cmd1 = Fremap_command (cmd), !NILP (cmd1))
cmd = cmd1;
}