Lisp_Object Vdebugger;
+/* The function from which the last `signal' was called. Set in
+ Fsignal. */
+
+Lisp_Object Vsignaling_function;
+
void specbind (), record_unwind_protect ();
Lisp_Object run_hook_with_args ();
Lisp_Object string;
Lisp_Object real_error_symbol;
extern int display_busy_cursor_p;
+ struct backtrace *bp;
immediate_quit = 0;
if (gc_in_progress || waiting_for_input)
conditions = Fget (real_error_symbol, Qerror_conditions);
+ /* Remember from where signal was called. Skip over the frame for
+ `signal' itself. If a frame for `error' follows, skip that,
+ too. */
+ bp = backtrace_list->next;
+ if (bp && bp->function && EQ (*bp->function, Qerror))
+ bp = bp->next;
+ Vsignaling_function = bp && bp->function ? *bp->function : Qnil;
+
for (; handlerlist; handlerlist = handlerlist->next)
{
register Lisp_Object clause;
return Fcons (Qt, Fcons (*backlist->function, tem));
}
}
+
\f
void
syms_of_eval ()
staticpro (&Vautoload_queue);
Vautoload_queue = Qnil;
+ staticpro (&Vsignaling_function);
+ Vsignaling_function = Qnil;
defsubr (&Sor);
defsubr (&Sand);