aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/eval.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/eval.c b/src/eval.c
index 3e648ed6216..c87b1bc704c 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -1873,18 +1873,19 @@ signal_or_quit (Lisp_Object error_symbol, Lisp_Object data, bool keyboard_quit)
1873 } 1873 }
1874 1874
1875 /* If we're in batch mode, print a backtrace unconditionally to help 1875 /* If we're in batch mode, print a backtrace unconditionally to help
1876 with debugging. Make sure to use `debug' unconditionally to not 1876 with debugging. Make sure to use `debug-early' unconditionally
1877 interfere with ERT or other packages that install custom 1877 to not interfere with ERT or other packages that install custom
1878 debuggers. Don't try to call the debugger while dumping or 1878 debuggers. */
1879 bootstrapping, it wouldn't work anyway. */
1880 if (!debugger_called && !NILP (error_symbol) 1879 if (!debugger_called && !NILP (error_symbol)
1881 && (NILP (clause) || EQ (h->tag_or_ch, Qerror)) 1880 && (NILP (clause) || EQ (h->tag_or_ch, Qerror))
1882 && noninteractive && backtrace_on_error_noninteractive 1881 && noninteractive && backtrace_on_error_noninteractive
1883 && !will_dump_p () && !will_bootstrap_p () 1882 && NILP (Vinhibit_debugger)
1884 && NILP (Vinhibit_debugger)) 1883 && !NILP (Ffboundp (Qdebug_early)))
1885 { 1884 {
1885 max_ensure_room (&max_lisp_eval_depth, lisp_eval_depth, 100);
1886 max_ensure_room (&max_specpdl_size, SPECPDL_INDEX (), 200);
1886 ptrdiff_t count = SPECPDL_INDEX (); 1887 ptrdiff_t count = SPECPDL_INDEX ();
1887 specbind (Qdebugger, Qdebug); 1888 specbind (Qdebugger, Qdebug_early);
1888 call_debugger (list2 (Qerror, Fcons (error_symbol, data))); 1889 call_debugger (list2 (Qerror, Fcons (error_symbol, data)));
1889 unbind_to (count, Qnil); 1890 unbind_to (count, Qnil);
1890 } 1891 }
@@ -4399,6 +4400,7 @@ before making `inhibit-quit' nil. */);
4399 DEFSYM (Qclosure, "closure"); 4400 DEFSYM (Qclosure, "closure");
4400 DEFSYM (QCdocumentation, ":documentation"); 4401 DEFSYM (QCdocumentation, ":documentation");
4401 DEFSYM (Qdebug, "debug"); 4402 DEFSYM (Qdebug, "debug");
4403 DEFSYM (Qdebug_early, "debug-early");
4402 4404
4403 DEFVAR_LISP ("inhibit-debugger", Vinhibit_debugger, 4405 DEFVAR_LISP ("inhibit-debugger", Vinhibit_debugger,
4404 doc: /* Non-nil means never enter the debugger. 4406 doc: /* Non-nil means never enter the debugger.
@@ -4453,7 +4455,7 @@ If due to frame exit, args are `exit' and the value being returned;
4453If due to error, args are `error' and a list of the args to `signal'. 4455If due to error, args are `error' and a list of the args to `signal'.
4454If due to `apply' or `funcall' entry, one arg, `lambda'. 4456If due to `apply' or `funcall' entry, one arg, `lambda'.
4455If due to `eval' entry, one arg, t. */); 4457If due to `eval' entry, one arg, t. */);
4456 Vdebugger = Qnil; 4458 Vdebugger = Qdebug_early;
4457 4459
4458 DEFVAR_LISP ("signal-hook-function", Vsignal_hook_function, 4460 DEFVAR_LISP ("signal-hook-function", Vsignal_hook_function,
4459 doc: /* If non-nil, this is a function for `signal' to call. 4461 doc: /* If non-nil, this is a function for `signal' to call.