emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/emacs-lisp/debug.el


From: Richard M. Stallman
Subject: [Emacs-diffs] Changes to emacs/lisp/emacs-lisp/debug.el
Date: Sun, 28 Jul 2002 21:49:45 -0400

Index: emacs/lisp/emacs-lisp/debug.el
diff -c emacs/lisp/emacs-lisp/debug.el:1.57 emacs/lisp/emacs-lisp/debug.el:1.58
*** emacs/lisp/emacs-lisp/debug.el:1.57 Sun Jul  7 16:22:29 2002
--- emacs/lisp/emacs-lisp/debug.el      Sun Jul 28 21:49:45 2002
***************
*** 101,227 ****
  any other args you like.  In that case, the list of args after the
  first will be printed into the backtrace buffer."
    (interactive)
!   (unless noninteractive
!     (message "Entering debugger..."))
!   (let (debugger-value
!       (debug-on-error nil)
!       (debug-on-quit nil)
!       (debugger-buffer (let ((default-major-mode 'fundamental-mode))
!                          (get-buffer-create "*Backtrace*")))
!       (debugger-old-buffer (current-buffer))
!       (debugger-step-after-exit nil)
!       ;; Don't keep reading from an executing kbd macro!
!       (executing-kbd-macro nil)
!       ;; Save the outer values of these vars for the `e' command
!       ;; before we replace the values.
!       (debugger-outer-match-data (match-data))
!       (debugger-outer-load-read-function load-read-function)
!       (debugger-outer-overriding-local-map overriding-local-map)
!       (debugger-outer-overriding-terminal-local-map
!        overriding-terminal-local-map)
!       (debugger-outer-track-mouse track-mouse)
!       (debugger-outer-last-command last-command)
!       (debugger-outer-this-command this-command)
!       (debugger-outer-unread-command-char unread-command-char)
!       (debugger-outer-unread-command-events unread-command-events)
!       (debugger-outer-unread-post-input-method-events
!        unread-post-input-method-events)
!       (debugger-outer-last-input-event last-input-event)
!       (debugger-outer-last-command-event last-command-event)
!       (debugger-outer-last-nonmenu-event last-nonmenu-event)
!       (debugger-outer-last-event-frame last-event-frame)
!       (debugger-outer-standard-input standard-input)
!       (debugger-outer-standard-output standard-output)
!       (debugger-outer-inhibit-redisplay inhibit-redisplay)
!       (debugger-outer-cursor-in-echo-area cursor-in-echo-area))
!     ;; Set this instead of binding it, so that `q'
!     ;; will not restore it.
!     (setq overriding-terminal-local-map nil)
!     ;; Don't let these magic variables affect the debugger itself.
!     (let ((last-command nil) this-command track-mouse
!         (unread-command-char -1) unread-command-events
!         unread-post-input-method-events
!         last-input-event last-command-event last-nonmenu-event
!         last-event-frame
!         overriding-local-map
!         load-read-function
!         ;; If we are inside a minibuffer, allow nesting
!         ;; so that we don't get an error from the `e' command.
!         (enable-recursive-minibuffers
!          (or enable-recursive-minibuffers (> (minibuffer-depth) 0)))
!         (standard-input t) (standard-output t)
!         inhibit-redisplay
!         (cursor-in-echo-area nil))
!       (unwind-protect
!         (save-excursion
!           (save-window-excursion
!             (pop-to-buffer debugger-buffer)
!             (debugger-mode)
!             (debugger-setup-buffer debugger-args)
!             (when noninteractive
!               ;; If the backtrace is long, save the beginning
!               ;; and the end, but discard the middle.
!               (when (> (count-lines (point-min) (point-max))
!                        debugger-batch-max-lines)
                  (goto-char (point-min))
!                 (forward-line (/ 2 debugger-batch-max-lines))
!                 (let ((middlestart (point)))
!                   (goto-char (point-max))
!                   (forward-line (- (/ 2 debugger-batch-max-lines)
!                                    debugger-batch-max-lines))
!                   (delete-region middlestart (point)))
!                 (insert "...\n"))
!               (goto-char (point-min))
!               (message (buffer-string))
!               (kill-emacs))
!             (if (eq (car debugger-args) 'debug)
!                 ;; Skip the frames for backtrace-debug, byte-code, and debug.
!                 (backtrace-debug 3 t))
!             (debugger-reenable)
!             (message "")
!             (let ((inhibit-trace t)
!                   (standard-output nil)
!                   (buffer-read-only t))
                (message "")
!               ;; Make sure we unbind buffer-read-only in the right buffer.
!               (save-excursion
!                 (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)
!           ;; 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-buffer)
!             (fundamental-mode))
!         (kill-buffer debugger-buffer))
!       (set-match-data debugger-outer-match-data)))
!     ;; Put into effect the modified values of these variables
!     ;; in case the user set them with the `e' command.
!     (setq load-read-function debugger-outer-load-read-function)
!     (setq overriding-local-map debugger-outer-overriding-local-map)
!     (setq overriding-terminal-local-map
!         debugger-outer-overriding-terminal-local-map)
!     (setq track-mouse debugger-outer-track-mouse)
!     (setq last-command debugger-outer-last-command)
!     (setq this-command debugger-outer-this-command)
!     (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)
!     (setq last-input-event debugger-outer-last-input-event)
!     (setq last-command-event debugger-outer-last-command-event)
!     (setq last-nonmenu-event debugger-outer-last-nonmenu-event)
!     (setq last-event-frame debugger-outer-last-event-frame)
!     (setq standard-input debugger-outer-standard-input)
!     (setq standard-output debugger-outer-standard-output)
!     (setq inhibit-redisplay debugger-outer-inhibit-redisplay)
!     (setq cursor-in-echo-area debugger-outer-cursor-in-echo-area)
!     (setq debug-on-next-call debugger-step-after-exit)
!     debugger-value))
  
  (defun debugger-setup-buffer (debugger-args)
    "Initialize the `*Backtrace*' buffer for entry to the debugger.
--- 101,230 ----
  any other args you like.  In that case, the list of args after the
  first will be printed into the backtrace buffer."
    (interactive)
!   (if inhibit-redisplay
!       ;; Don't really try to enter debugger within an eval from redisplay.
!       debugger-value
!     (unless noninteractive
!       (message "Entering debugger..."))
!     (let (debugger-value
!         (debug-on-error nil)
!         (debug-on-quit nil)
!         (debugger-buffer (let ((default-major-mode 'fundamental-mode))
!                            (get-buffer-create "*Backtrace*")))
!         (debugger-old-buffer (current-buffer))
!         (debugger-step-after-exit nil)
!         ;; Don't keep reading from an executing kbd macro!
!         (executing-kbd-macro nil)
!         ;; Save the outer values of these vars for the `e' command
!         ;; before we replace the values.
!         (debugger-outer-match-data (match-data))
!         (debugger-outer-load-read-function load-read-function)
!         (debugger-outer-overriding-local-map overriding-local-map)
!         (debugger-outer-overriding-terminal-local-map
!          overriding-terminal-local-map)
!         (debugger-outer-track-mouse track-mouse)
!         (debugger-outer-last-command last-command)
!         (debugger-outer-this-command this-command)
!         (debugger-outer-unread-command-char unread-command-char)
!         (debugger-outer-unread-command-events unread-command-events)
!         (debugger-outer-unread-post-input-method-events
!          unread-post-input-method-events)
!         (debugger-outer-last-input-event last-input-event)
!         (debugger-outer-last-command-event last-command-event)
!         (debugger-outer-last-nonmenu-event last-nonmenu-event)
!         (debugger-outer-last-event-frame last-event-frame)
!         (debugger-outer-standard-input standard-input)
!         (debugger-outer-standard-output standard-output)
!         (debugger-outer-inhibit-redisplay inhibit-redisplay)
!         (debugger-outer-cursor-in-echo-area cursor-in-echo-area))
!       ;; Set this instead of binding it, so that `q'
!       ;; will not restore it.
!       (setq overriding-terminal-local-map nil)
!       ;; Don't let these magic variables affect the debugger itself.
!       (let ((last-command nil) this-command track-mouse
!           (unread-command-char -1) unread-command-events
!           unread-post-input-method-events
!           last-input-event last-command-event last-nonmenu-event
!           last-event-frame
!           overriding-local-map
!           load-read-function
!           ;; If we are inside a minibuffer, allow nesting
!           ;; so that we don't get an error from the `e' command.
!           (enable-recursive-minibuffers
!            (or enable-recursive-minibuffers (> (minibuffer-depth) 0)))
!           (standard-input t) (standard-output t)
!           inhibit-redisplay
!           (cursor-in-echo-area nil))
!       (unwind-protect
!           (save-excursion
!             (save-window-excursion
!               (pop-to-buffer debugger-buffer)
!               (debugger-mode)
!               (debugger-setup-buffer debugger-args)
!               (when noninteractive
!                 ;; If the backtrace is long, save the beginning
!                 ;; and the end, but discard the middle.
!                 (when (> (count-lines (point-min) (point-max))
!                          debugger-batch-max-lines)
!                   (goto-char (point-min))
!                   (forward-line (/ 2 debugger-batch-max-lines))
!                   (let ((middlestart (point)))
!                     (goto-char (point-max))
!                     (forward-line (- (/ 2 debugger-batch-max-lines)
!                                      debugger-batch-max-lines))
!                     (delete-region middlestart (point)))
!                   (insert "...\n"))
                  (goto-char (point-min))
!                 (message (buffer-string))
!                 (kill-emacs))
!               (if (eq (car debugger-args) 'debug)
!                   ;; Skip the frames for backtrace-debug, byte-code, and 
debug.
!                   (backtrace-debug 3 t))
!               (debugger-reenable)
                (message "")
!               (let ((inhibit-trace t)
!                     (standard-output nil)
!                     (buffer-read-only t))
!                 (message "")
!                 ;; Make sure we unbind buffer-read-only in the right buffer.
!                 (save-excursion
!                   (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)
!             ;; 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-buffer)
!               (fundamental-mode))
!           (kill-buffer debugger-buffer))
!         (set-match-data debugger-outer-match-data)))
!       ;; Put into effect the modified values of these variables
!       ;; in case the user set them with the `e' command.
!       (setq load-read-function debugger-outer-load-read-function)
!       (setq overriding-local-map debugger-outer-overriding-local-map)
!       (setq overriding-terminal-local-map
!           debugger-outer-overriding-terminal-local-map)
!       (setq track-mouse debugger-outer-track-mouse)
!       (setq last-command debugger-outer-last-command)
!       (setq this-command debugger-outer-this-command)
!       (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)
!       (setq last-input-event debugger-outer-last-input-event)
!       (setq last-command-event debugger-outer-last-command-event)
!       (setq last-nonmenu-event debugger-outer-last-nonmenu-event)
!       (setq last-event-frame debugger-outer-last-event-frame)
!       (setq standard-input debugger-outer-standard-input)
!       (setq standard-output debugger-outer-standard-output)
!       (setq inhibit-redisplay debugger-outer-inhibit-redisplay)
!       (setq cursor-in-echo-area debugger-outer-cursor-in-echo-area)
!       (setq debug-on-next-call debugger-step-after-exit)
!       debugger-value)))
  
  (defun debugger-setup-buffer (debugger-args)
    "Initialize the `*Backtrace*' buffer for entry to the debugger.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]