]> git.eshelyaron.com Git - emacs.git/commit
debug.el: Straighten the code that find the "base" of the backtrace
authorStefan Monnier <monnier@iro.umontreal.ca>
Mon, 18 Dec 2023 22:42:37 +0000 (17:42 -0500)
committerStefan Monnier <monnier@iro.umontreal.ca>
Mon, 18 Dec 2023 22:52:58 +0000 (17:52 -0500)
commit6937182a0e7735e83377c757ae13292692b0cb85
treeb739d1e60c6bda172ce35c8261683431db94f69f
parent1d5d2f16c330e98a42c94fbea3728802f7535918
debug.el: Straighten the code that find the "base" of the backtrace

Let the caller tell us clearly where is the base of the backtrace,
if it's not `debug`.  This is done by passing a new `:backtrace-base`
keyword argument to `debug`.

Then use this info systematically in all the places where we access
the real C-level backtrace, to try and avoid inconsistencies and brittle
code that tries to enumerate the expected frames we're in.

* src/eval.c (get_backtrace_starting_at): Add support for offsets in the
`base` argument.
(Fbacktrace_debug): Add optional `base` argument.

* lisp/emacs-lisp/debug.el (debug, debugger-frame, debugger-frame-clear):
Use `debugger--backtrace-base` when calling `backtrace-debug`.
(debugger-setup-buffer): Use `debugger--backtrace-base`
when calling `backtrace-get-frames`.
(debugger-frame-number): Drop `skip-base` arg, assume it's never nil.
Add sanity check.
(debugger--backtrace-base): Use the `:backtrace-base` info
in `debugger-args`.
(debugger-eval-expression): Adjust call to `debugger-frame-number`.
(debug--implement-debug-on-entry): Pass appropriate `:backtrace-base`.
lisp/emacs-lisp/debug.el
lisp/subr.el
src/eval.c