/* Call a Lisp function interactively.
- Copyright (C) 1985, 86, 93, 94, 95, 1997, 2000, 2002
+ Copyright (C) 1985, 86, 93, 94, 95, 1997, 2000, 02, 2003
Free Software Foundation, Inc.
This file is part of GNU Emacs.
Lisp_Object Vcommand_history;
extern Lisp_Object Vhistory_length;
+extern Lisp_Object Vthis_original_command, real_this_command;
Lisp_Object Vcommand_debug_status, Qcommand_debug_status;
Lisp_Object Qenable_recursive_minibuffers;
Fsignal (Qmark_inactive, Qnil);
}
+/* If the list of args INPUT was produced with an explicit call to
+ `list', look for elements that were computed with
+ (region-beginning) or (region-end), and put those expressions into
+ VALUES instead of the present values.
+
+ This function doesn't return a value because it modifies elements
+ of VALUES to do its job. */
+
static void
fix_command (input, values)
Lisp_Object input, values;
{
- /* If the list of args was produced with an explicit call to `list',
- look for elements that were computed with (region-beginning)
- or (region-end), and put those expressions into VALUES
- instead of the present values. */
if (CONSP (input))
{
Lisp_Object car;
int key_count;
int record_then_fail = 0;
+ Lisp_Object save_this_command, save_last_command;
+ Lisp_Object save_this_original_command, save_real_this_command;
+
+ save_this_command = Vthis_command;
+ save_this_original_command = Vthis_original_command;
+ save_real_this_command = real_this_command;
+ save_last_command = current_kboard->Vlast_command;
+
if (NILP (keys))
keys = this_command_keys, key_count = this_command_key_count;
else
if (i != num_input_events || !NILP (record_flag))
{
/* We should record this command on the command history. */
- Lisp_Object values, car;
+ Lisp_Object values;
/* Make a copy of the list of values, for the command history,
and turn them into things we can eval. */
values = quotify_args (Fcopy_sequence (specs));
XSETCDR (teml, Qnil);
}
}
+
+ Vthis_command = save_this_command;
+ Vthis_original_command = save_this_original_command;
+ real_this_command= save_real_this_command;
+ current_kboard->Vlast_command = save_last_command;
+
single_kboard_state ();
return apply1 (function, specs);
}
if (!NILP (Vmouse_leave_buffer_hook))
call1 (Vrun_hooks, Qmouse_leave_buffer_hook);
- Fselect_window (event);
+ Fselect_window (event, Qnil);
}
string++;
}
if (record_then_fail)
Fbarf_if_buffer_read_only ();
+ Vthis_command = save_this_command;
+ Vthis_original_command = save_this_original_command;
+ real_this_command= save_real_this_command;
+ current_kboard->Vlast_command = save_last_command;
+
single_kboard_state ();
{
defsubr (&Scall_interactively);
defsubr (&Sprefix_numeric_value);
}
+
+/* arch-tag: a3a7cad7-bcac-42ce-916e-1bd2546ebf37
+ (do not change this comment) */