diff options
author | Gemini Lasswell <gazally@runbox.com> | 2020-10-01 19:59:58 +0200 |
---|---|---|
committer | Lars Ingebrigtsen <larsi@gnus.org> | 2020-10-01 20:00:19 +0200 |
commit | 4997032c05e7929d6f306d5195da7c3accfad79f (patch) | |
tree | 4ff151c5f5796acde62c45acc6982d0fd616ebae /lisp/emacs-lisp | |
parent | 08bda922b4c64e6f8fbf7cfae33aa3ac55b19ee4 (diff) | |
download | emacs-4997032c05e7929d6f306d5195da7c3accfad79f.tar.gz emacs-4997032c05e7929d6f306d5195da7c3accfad79f.tar.bz2 emacs-4997032c05e7929d6f306d5195da7c3accfad79f.zip |
Restore some public debugging functions removed in Emacs 27
* lisp/emacs-lisp/backtrace.el (backtrace--to-string): New function.
(backtrace-to-string): Use it. Fix whitespace (bug#40728).
* lisp/emacs-lisp/debug.el (debugger-insert-backtrace): New function.
Mark it as obsolete.
(debugger-toggle-locals, debug-help-follow): New aliases.
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r-- | lisp/emacs-lisp/backtrace.el | 11 | ||||
-rw-r--r-- | lisp/emacs-lisp/debug.el | 15 |
2 files changed, 22 insertions, 4 deletions
diff --git a/lisp/emacs-lisp/backtrace.el b/lisp/emacs-lisp/backtrace.el index 37dad8db162..5874ba72fcd 100644 --- a/lisp/emacs-lisp/backtrace.el +++ b/lisp/emacs-lisp/backtrace.el @@ -922,11 +922,15 @@ Output stream used is value of `standard-output'." (princ (backtrace-to-string (backtrace-get-frames 'backtrace))) nil) -(defun backtrace-to-string(&optional frames) +(defun backtrace-to-string (&optional frames) "Format FRAMES, a list of `backtrace-frame' objects, for output. Return the result as a string. If FRAMES is nil, use all function calls currently active." - (unless frames (setq frames (backtrace-get-frames 'backtrace-to-string))) + (substring-no-properties + (backtrace--to-string + (or frames (backtrace-get-frames 'backtrace-to-string))))) + +(defun backtrace--to-string (frames) (let ((backtrace-fontify nil)) (with-temp-buffer (backtrace-mode) @@ -934,8 +938,7 @@ function calls currently active." backtrace-frames frames backtrace-print-function #'cl-prin1) (backtrace-print) - (substring-no-properties (filter-buffer-substring (point-min) - (point-max)))))) + (filter-buffer-substring (point-min) (point-max))))) (provide 'backtrace) diff --git a/lisp/emacs-lisp/debug.el b/lisp/emacs-lisp/debug.el index ed28997292f..14957eae0f2 100644 --- a/lisp/emacs-lisp/debug.el +++ b/lisp/emacs-lisp/debug.el @@ -320,6 +320,17 @@ the debugger will not be entered." (message "Error in debug printer: %S" err) (prin1 obj stream)))) +(make-obsolete 'debugger-insert-backtrace + "use a `backtrace-mode' buffer or `backtrace-to-string'." + "Emacs 27.1") + +(defun debugger-insert-backtrace (frames do-xrefs) + "Format and insert the backtrace FRAMES at point. +Make functions into cross-reference buttons if DO-XREFS is non-nil." + (insert (if do-xrefs + (backtrace--to-string frames) + (backtrace-to-string frames)))) + (defun debugger-setup-buffer (args) "Initialize the `*Backtrace*' buffer for entry to the debugger. That buffer should be current already and in debugger-mode." @@ -527,6 +538,8 @@ The environment used is the one when entering the activation frame at point." (let ((str (eval-expression-print-format val))) (if str (princ str t)))))))) +(defalias 'debugger-toggle-locals 'backtrace-toggle-locals) + (defvar debugger-mode-map (let ((map (make-keymap))) @@ -621,6 +634,8 @@ Complete list of commands: (buffer-substring (line-beginning-position 0) (line-end-position 0))))) +(defalias 'debug-help-follow 'backtrace-help-follow-symbol) + ;; When you change this, you may also need to change the number of ;; frames that the debugger skips. |