changeset 60587:dbd707c470de

(debug): Set debug-on-exit before calling debugger-setup-buffer so that backtrace marks the frames set to debug-on-exit and we don't have to do it manually. Set an extra debug-on-exit for macro's. (debugger-setup-buffer): Don't mark the top frame manually.
author Lute Kamstra <lute@gnu.org>
date Sun, 13 Mar 2005 20:53:14 +0000
parents c0017532a99a
children 7de80cde5f14
files lisp/emacs-lisp/debug.el
diffstat 1 files changed, 13 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/emacs-lisp/debug.el	Sun Mar 13 15:34:46 2005 +0000
+++ b/lisp/emacs-lisp/debug.el	Sun Mar 13 20:53:14 2005 +0000
@@ -170,7 +170,14 @@
 	    (save-excursion
 	      (save-window-excursion
 		(with-no-warnings
-		 (setq unread-command-char -1))
+		  (setq unread-command-char -1))
+		(when (eq (car debugger-args) 'debug)
+		  ;; Skip the frames for backtrace-debug, byte-code,
+		  ;; and implement-debug-on-entry.
+		  (backtrace-debug 4 t)
+		  ;; Place an extra debug-on-exit for macro's.
+		  (when (eq 'lambda (car-safe (cadr (backtrace-frame 4))))
+		    (backtrace-debug 5 t)))
 		(pop-to-buffer debugger-buffer)
 		(debugger-mode)
 		(debugger-setup-buffer debugger-args)
@@ -190,10 +197,6 @@
 		  (goto-char (point-min))
 		  (message "%s" (buffer-string))
 		  (kill-emacs))
-		(if (eq (car debugger-args) 'debug)
-		    ;; Skip the frames for backtrace-debug, byte-code,
-		    ;; and implement-debug-on-entry.
-		    (backtrace-debug 4 t))
 		(message "")
 		(let ((standard-output nil)
 		      (buffer-read-only t))
@@ -225,7 +228,7 @@
       (setq last-command debugger-outer-last-command)
       (setq this-command debugger-outer-this-command)
       (with-no-warnings
-       (setq unread-command-char debugger-outer-unread-command-char))
+	(setq unread-command-char debugger-outer-unread-command-char))
       (setq unread-command-events debugger-outer-unread-command-events)
       (setq unread-post-input-method-events
 	    debugger-outer-unread-post-input-method-events)
@@ -263,12 +266,7 @@
   ;; lambda is for debug-on-call when a function call is next.
   ;; debug is for debug-on-entry function called.
   (cond ((memq (car debugger-args) '(lambda debug))
-	 (insert "--entering a function:\n")
-	 (if (eq (car debugger-args) 'debug)
-	     (progn
-	       (delete-char 1)
-	       (insert ?*)
-	       (beginning-of-line))))
+	 (insert "--entering a function:\n"))
 	;; Exiting a function.
 	((eq (car debugger-args) 'exit)
 	 (insert "--returning value: ")
@@ -508,12 +506,12 @@
 	    (unwind-protect
 		(progn
 		  (with-no-warnings
-		   (setq unread-command-char debugger-outer-unread-command-char))
+		    (setq unread-command-char debugger-outer-unread-command-char))
 		  (prog1 (progn ,@body)
 		    (with-no-warnings
-		     (setq debugger-outer-unread-command-char unread-command-char))))
+		      (setq debugger-outer-unread-command-char unread-command-char))))
 	      (with-no-warnings
-	       (setq unread-command-char save-ucc))))
+		(setq unread-command-char save-ucc))))
         (setq debugger-outer-match-data (match-data))
         (setq debugger-outer-load-read-function load-read-function)
         (setq debugger-outer-overriding-terminal-local-map