(defvar debugger-outer-inhibit-redisplay)
(defvar debugger-outer-cursor-in-echo-area)
+(defvar inhibit-debug-on-entry nil)
+
;;;###autoload
(setq debugger 'debug)
;;;###autoload
(setq overriding-terminal-local-map nil)
;; Don't let these magic variables affect the debugger itself.
(let ((last-command nil) this-command track-mouse
+ (inhibit-trace t)
+ (inhibit-debug-on-entry t)
unread-command-events
unread-post-input-method-events
last-input-event last-command-event last-nonmenu-event
(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.
(setq body (cons (documentation function) body)))
(fset function (cons 'lambda (cons (car contents) body)))))))
+
+(defconst debug-entry-code '(if inhibit-debug-on-entry nil (debug 'debug))
+ "Code added to a function to cause it to call the debugger upon entry.")
+
(defun debug-on-entry-1 (function defn flag)
(if (subrp defn)
(error "%s is a built-in function" function)
(if (stringp (car tail)) (setq tail (cdr tail)))
;; Skip the interactive form.
(if (eq 'interactive (car-safe (car tail))) (setq tail (cdr tail)))
- (unless (eq flag (equal (car tail) '(debug 'debug)))
+ (unless (eq flag (equal (car tail) debug-entry-code))
;; If the function has no body, add nil as a body element.
(when (null tail)
(setq tail (list nil))
(progn (setcar tail (cadr tail))
(setcdr tail (cddr tail)))
(setcdr tail (cons (car tail) (cdr tail)))
- (setcar tail '(debug 'debug))))
+ (setcar tail debug-entry-code)))
defn))))
(defun debugger-list-functions ()