changeset 60308:9bc793e5120d

(inhibit-debug-on-entry): New var. (debug): Use it. Move the inhibit-trace earlier. (debug-entry-code): New const. (debug-on-entry-1): Use it.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Mon, 28 Feb 2005 14:33:50 +0000
parents ae8e54a87aa7
children 7621f2acbeb0
files lisp/emacs-lisp/debug.el
diffstat 1 files changed, 11 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/emacs-lisp/debug.el	Mon Feb 28 13:31:19 2005 +0000
+++ b/lisp/emacs-lisp/debug.el	Mon Feb 28 14:33:50 2005 +0000
@@ -93,6 +93,8 @@
 (defvar debugger-outer-inhibit-redisplay)
 (defvar debugger-outer-cursor-in-echo-area)
 
+(defvar inhibit-debug-on-entry nil)
+
 ;;;###autoload
 (setq debugger 'debug)
 ;;;###autoload
@@ -147,6 +149,8 @@
       (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
@@ -189,8 +193,7 @@
 		    (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.
@@ -691,6 +694,10 @@
 	      (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)
@@ -703,7 +710,7 @@
 	(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))
@@ -713,7 +720,7 @@
 	      (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 ()