# HG changeset patch # User Karl Heuer # Date 819565710 0 # Node ID 197ada59560544e66690c534fcebb84674b335e9 # Parent a17778d3f5f398df05fd1d8d494d42385f2c83a2 (Fcommand_execute): Allow function + args list as cmd. (cmd_error_internal): Use print_error_message. diff -r a17778d3f5f3 -r 197ada595605 src/keyboard.c --- a/src/keyboard.c Thu Dec 21 17:00:42 1995 +0000 +++ b/src/keyboard.c Thu Dec 21 17:08:30 1995 +0000 @@ -900,10 +900,7 @@ Lisp_Object data; char *context; { - Lisp_Object errmsg, tail, errname, file_error; Lisp_Object stream; - struct gcpro gcpro1; - int i; Vquit_flag = Qnil; Vinhibit_quit = Qt; @@ -925,49 +922,7 @@ if (context != 0) write_string_1 (context, -1, stream); - errname = Fcar (data); - - if (EQ (errname, Qerror)) - { - data = Fcdr (data); - if (!CONSP (data)) data = Qnil; - errmsg = Fcar (data); - file_error = Qnil; - } - else - { - errmsg = Fget (errname, Qerror_message); - file_error = Fmemq (Qfile_error, - Fget (errname, Qerror_conditions)); - } - - /* Print an error message including the data items. - This is done by printing it into a scratch buffer - and then making a copy of the text in the buffer. */ - - if (!CONSP (data)) data = Qnil; - tail = Fcdr (data); - GCPRO1 (tail); - - /* For file-error, make error message by concatenating - all the data items. They are all strings. */ - if (!NILP (file_error) && !NILP (tail)) - errmsg = XCONS (tail)->car, tail = XCONS (tail)->cdr; - - if (STRINGP (errmsg)) - Fprinc (errmsg, stream); - else - write_string_1 ("peculiar error", -1, stream); - - for (i = 0; CONSP (tail); tail = Fcdr (tail), i++) - { - write_string_1 (i ? ", " : ": ", 2, stream); - if (!NILP (file_error)) - Fprinc (Fcar (tail), stream); - else - Fprin1 (Fcar (tail), stream); - } - UNGCPRO; + print_error_message (data, stream); /* If the window system or terminal frame hasn't been initialized yet, or we're in -batch mode, this error should cause Emacs to exit. */ @@ -6445,7 +6400,8 @@ } } - while (1) + while (! CONSP (cmd) || EQ (XCONS (cmd)->car, Qlambda) + || EQ (XCONS (cmd)->car, Qautoload)) { final = Findirect_function (cmd);