(debug): Hide the buffer if it's not killed.
Remove unused and inexistent var `inhibit-trace'. (debugger-mode): Use run-mode-hooks. (debugger-list-functions): Add buttons; setup xref stack.
This commit is contained in:
parent
c6f4488cfd
commit
78d54deee7
2 changed files with 70 additions and 64 deletions
|
@ -1,6 +1,7 @@
|
|||
;;; debug.el --- debuggers and related commands for Emacs
|
||||
|
||||
;; Copyright (C) 1985, 1986, 1994, 2001, 2003 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1985, 1986, 1994, 2001, 2003, 2005
|
||||
;; Free Software Foundation, Inc.
|
||||
|
||||
;; Maintainer: FSF
|
||||
;; Keywords: lisp, tools, maint
|
||||
|
@ -188,8 +189,7 @@ first will be printed into the backtrace buffer."
|
|||
(backtrace-debug 3 t))
|
||||
(debugger-reenable)
|
||||
(message "")
|
||||
(let ((inhibit-trace t)
|
||||
(standard-output nil)
|
||||
(let ((standard-output nil)
|
||||
(buffer-read-only t))
|
||||
(message "")
|
||||
;; Make sure we unbind buffer-read-only in the right buffer.
|
||||
|
@ -197,15 +197,16 @@ first will be printed into the backtrace buffer."
|
|||
(recursive-edit)))))
|
||||
;; Kill or at least neuter the backtrace buffer, so that users
|
||||
;; don't try to execute debugger commands in an invalid context.
|
||||
(if (get-buffer-window debugger-buffer 'visible)
|
||||
(if (get-buffer-window debugger-buffer 0)
|
||||
;; Still visible despite the save-window-excursion? Maybe it
|
||||
;; it's in a pop-up frame. It would be annoying to delete and
|
||||
;; recreate it every time the debugger stops, so instead we'll
|
||||
;; erase it but leave it visible.
|
||||
(save-excursion
|
||||
(set-buffer debugger-buffer)
|
||||
;; erase it and hide it but keep it alive.
|
||||
(with-current-buffer debugger-buffer
|
||||
(erase-buffer)
|
||||
(fundamental-mode))
|
||||
(fundamental-mode)
|
||||
(with-selected-window (get-buffer-window debugger-buffer 0)
|
||||
(bury-buffer)))
|
||||
(kill-buffer debugger-buffer))
|
||||
(set-match-data debugger-outer-match-data)))
|
||||
;; Put into effect the modified values of these variables
|
||||
|
@ -543,29 +544,26 @@ Applies to the frame whose line point is on in the backtrace."
|
|||
'read-expression-history)))
|
||||
(debugger-env-macro (eval-expression exp)))
|
||||
|
||||
(defvar debugger-mode-map nil)
|
||||
(unless debugger-mode-map
|
||||
(let ((loop ? ))
|
||||
(setq debugger-mode-map (make-keymap))
|
||||
(set-keymap-parent debugger-mode-map button-buffer-map)
|
||||
(suppress-keymap debugger-mode-map)
|
||||
(define-key debugger-mode-map "-" 'negative-argument)
|
||||
(define-key debugger-mode-map "b" 'debugger-frame)
|
||||
(define-key debugger-mode-map "c" 'debugger-continue)
|
||||
(define-key debugger-mode-map "j" 'debugger-jump)
|
||||
(define-key debugger-mode-map "r" 'debugger-return-value)
|
||||
(define-key debugger-mode-map "u" 'debugger-frame-clear)
|
||||
(define-key debugger-mode-map "d" 'debugger-step-through)
|
||||
(define-key debugger-mode-map "l" 'debugger-list-functions)
|
||||
(define-key debugger-mode-map "h" 'describe-mode)
|
||||
(define-key debugger-mode-map "q" 'top-level)
|
||||
(define-key debugger-mode-map "e" 'debugger-eval-expression)
|
||||
(define-key debugger-mode-map " " 'next-line)
|
||||
(define-key debugger-mode-map "R" 'debugger-record-expression)
|
||||
(define-key debugger-mode-map "\C-m" 'help-follow)
|
||||
(define-key debugger-mode-map [mouse-2] 'push-button)
|
||||
))
|
||||
|
||||
(defvar debugger-mode-map
|
||||
(let ((map (make-keymap)))
|
||||
(set-keymap-parent map button-buffer-map)
|
||||
(suppress-keymap map)
|
||||
(define-key map "-" 'negative-argument)
|
||||
(define-key map "b" 'debugger-frame)
|
||||
(define-key map "c" 'debugger-continue)
|
||||
(define-key map "j" 'debugger-jump)
|
||||
(define-key map "r" 'debugger-return-value)
|
||||
(define-key map "u" 'debugger-frame-clear)
|
||||
(define-key map "d" 'debugger-step-through)
|
||||
(define-key map "l" 'debugger-list-functions)
|
||||
(define-key map "h" 'describe-mode)
|
||||
(define-key map "q" 'top-level)
|
||||
(define-key map "e" 'debugger-eval-expression)
|
||||
(define-key map " " 'next-line)
|
||||
(define-key map "R" 'debugger-record-expression)
|
||||
(define-key map "\C-m" 'help-follow)
|
||||
(define-key map [mouse-2] 'push-button)
|
||||
map))
|
||||
|
||||
(defcustom debugger-record-buffer "*Debugger-record*"
|
||||
"*Buffer name for expression values, for \\[debugger-record-expression]."
|
||||
|
@ -616,7 +614,7 @@ Complete list of commands:
|
|||
(setq truncate-lines t)
|
||||
(set-syntax-table emacs-lisp-mode-syntax-table)
|
||||
(use-local-map debugger-mode-map)
|
||||
(run-hooks 'debugger-mode-hook))
|
||||
(run-mode-hooks 'debugger-mode-hook))
|
||||
|
||||
;;;###autoload
|
||||
(defun debug-on-entry (function)
|
||||
|
@ -716,22 +714,23 @@ If argument is nil or an empty string, cancel for all functions."
|
|||
(defun debugger-list-functions ()
|
||||
"Display a list of all the functions now set to debug on entry."
|
||||
(interactive)
|
||||
(with-output-to-temp-buffer "*Help*"
|
||||
(if (null debug-function-list)
|
||||
(princ "No debug-on-entry functions now\n")
|
||||
(princ "Functions set to debug on entry:\n\n")
|
||||
(let ((list debug-function-list))
|
||||
(while list
|
||||
(prin1 (car list))
|
||||
(terpri)
|
||||
(setq list (cdr list))))
|
||||
(princ "Note: if you have redefined a function, then it may no longer\n")
|
||||
(princ "be set to debug on entry, even if it is in the list."))
|
||||
(save-excursion
|
||||
(set-buffer standard-output)
|
||||
(help-mode))))
|
||||
(require 'help-mode)
|
||||
(help-setup-xref '(debugger-list-functions) (interactive-p))
|
||||
(with-output-to-temp-buffer (help-buffer)
|
||||
(with-current-buffer standard-output
|
||||
(if (null debug-function-list)
|
||||
(princ "No debug-on-entry functions now\n")
|
||||
(princ "Functions set to debug on entry:\n\n")
|
||||
(dolist (fun debug-function-list)
|
||||
(make-text-button (point) (progn (prin1 fun) (point))
|
||||
'type 'help-function
|
||||
'help-args (list fun))
|
||||
(terpri))
|
||||
(terpri)
|
||||
(princ "Note: if you have redefined a function, then it may no longer\n")
|
||||
(princ "be set to debug on entry, even if it is in the list.")))))
|
||||
|
||||
(provide 'debug)
|
||||
|
||||
;;; arch-tag: b6ec7047-f801-4103-9c63-d69322db9d3b
|
||||
;; arch-tag: b6ec7047-f801-4103-9c63-d69322db9d3b
|
||||
;;; debug.el ends here
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue