>From bbec49e74acae529ddac91a23a9c81af53454e7e Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Sat, 11 Feb 2017 19:00:19 -0500 Subject: [PATCH v1 4/5] Hide byte code in backtraces (Bug#6991) * lisp/emacs-lisp/debug.el (help-byte-code): New button type, calls `disassemble' in its action. (debugger-insert-backtrace): Cover byte code with help-byte-code button. --- lisp/emacs-lisp/debug.el | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/lisp/emacs-lisp/debug.el b/lisp/emacs-lisp/debug.el index 42e44761de..94b683dcb9 100644 --- a/lisp/emacs-lisp/debug.el +++ b/lisp/emacs-lisp/debug.el @@ -265,6 +265,12 @@ debug debugger-value))) +(define-button-type 'help-byte-code + 'follow-link t + 'action (lambda (button) + (disassemble (button-get button 'byte-code-function))) + 'help-echo (purecopy "mouse-2, RET: disassemble this function")) + (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." @@ -286,7 +292,15 @@ debugger-insert-backtrace (when fun-file (make-text-button fun-pt (+ fun-pt (length (symbol-name fun))) :type 'help-function-def - 'help-args (list fun fun-file)))) + 'help-args (list fun fun-file))) + (when (byte-code-function-p fun) + (goto-char fun-pt) + (forward-sexp) + (make-text-button fun-pt (point) + :type 'help-byte-code + 'byte-code-function fun + 'display "#") + (end-of-line))) ;; After any frame that uses eval-buffer, insert a line that ;; states the buffer position it's reading at. (when (and eval-buffers (memq fun '(eval-buffer eval-region))) -- 2.11.1