[Top][All Lists]

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

Re: debugger with pop-up-frames non-nil: keeps creating new frames

From: Stefan Monnier
Subject: Re: debugger with pop-up-frames non-nil: keeps creating new frames
Date: Tue, 07 Jun 2005 17:59:07 -0400
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.0.50 (gnu/linux)

>         The patch was against the Emacs-CVS code.  After patching the
>         file, you have to byte-compile it and you have to redump Emacs
>         because it's a preloaded file, IIRC.

>     I can download the CVS
>     file, patch it, byte-compile it, and load the byte-compiled
>     file (using load-file). Wouldn't that be sufficient?

> I did that, and I don't see the bug using only my steps 1-6 from before.

Good, thanks.

> If I do (setq special-display-regexps '("[ ]?[*][^*]+[*]")), then when I hit
> `d' in the debugger, the debugger frame iconifies.

Doesn't it de-iconify right after (thus flashing)?  That's very odd.

> That is, I use the same steps 1-6 as before, except this time *Backtrace*
> is considered a special-display buffer: emacs -q, load the patched cvs
> debug.elc, set variables pop-up-frames and display-buffer-reuse-frames to
> `t'.

Yes, the special-display buffer case is what I've been using for years ;-)

> I also tried substituting `quit-window' for `bury-buffer' in the code.  That
> solves the iconification problem, but the frame is effectively erased and
> redrawn at each debugger `d', producing a flashing effect.

With bury-buffer I see the flashing.

> I don't understand:
>  - Why bury-buffer iconifies.

Because of the case where you hit `q' or `c' or ... rather than `d'.

>  - Why we would want to use bury-buffer here at all? Why not leave it, since
> we are still in the debugger? What was wrong with the way it worked before
> (say, in Emacs 20)?

Actually the code is used when we leave the debugger.  It's just that when
you use `d' you only leave the debugger temporarily.

If you look at what happens in a single-frame case, the code deletes/creates
a window at each step.  Just like the iconify/deiconify flashing you see
with quit-window.

Can you try the additional patch below?


--- debug.el    07 jun 2005 14:31:08 -0400      1.81
+++ debug.el    07 jun 2005 17:58:11 -0400      
@@ -226,12 +226,16 @@
                (with-selected-window (get-buffer-window debugger-buffer 0)
-                  (when (window-dedicated-p (selected-window))
+                  (when (and (window-dedicated-p (selected-window))
+                             (not debugger-step-after-exit))
                     ;; If the window is not dedicated, burying the buffer
                     ;; will mean that the frame created for it is left
-                    ;; around showing smoe random buffer, and next time we
+                    ;; around showing some random buffer, and next time we
                     ;; pop to the debugger buffer we'll create yet
                     ;; another frame.
+                    ;; If debugger-step-after-exit is non-nil, burying the
+                    ;; buffer will iconify the frame, but only to de-iconofy
+                    ;; immediately after when we re-enter the debugger.
            (kill-buffer debugger-buffer))
          (set-match-data debugger-outer-match-data)))

reply via email to

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