Lisp_Object
cmd_error (data)
Lisp_Object data;
+{
+ Vstandard_output = Qt;
+ Vstandard_input = Qt;
+ Vexecuting_macro = Qnil;
+ cmd_error_internal (data, 0);
+
+ Vquit_flag = Qnil;
+
+ Vinhibit_quit = Qnil;
+
+ return make_number (0);
+}
+
+cmd_error_internal (data, context)
+ Lisp_Object data;
+ char *context;
{
Lisp_Object errmsg, tail, errname, file_error;
Lisp_Object stream;
Vquit_flag = Qnil;
Vinhibit_quit = Qt;
- Vstandard_output = Qt;
- Vstandard_input = Qt;
- Vexecuting_macro = Qnil;
echo_area_glyphs = 0;
/* If the window system or terminal frame hasn't been initialized
stream = Qt;
}
+ if (context != 0)
+ write_string_1 (context, -1, stream);
+
errname = Fcar (data);
if (EQ (errname, Qerror))
Fterpri (stream);
Fkill_emacs (make_number (-1));
}
-
- Vquit_flag = Qnil;
-
- Vinhibit_quit = Qnil;
- return make_number (0);
}
\f
Lisp_Object command_loop_1 ();
register Lisp_Object c;
int count;
jmp_buf save_jump;
+ int key_already_recorded = 0;
if (CONSP (Vunread_command_events))
{
{
c = read_char_minibuf_menu_prompt (commandflag, nmaps, maps);
if (! NILP (c))
- goto non_reread;
+ {
+ key_already_recorded = 1;
+ goto non_reread;
+ }
}
/* If in middle of key sequence and minibuffer not active,
if (XTYPE (c) == Lisp_Buffer)
return c;
+ if (key_already_recorded)
+ return c;
+
/* Wipe the echo area. */
echo_area_glyphs = 0;