Subject: Re: bug#36505: 26.1; GDB stepping through code splits GUD windows

From: Martin Sebor <[email-masked]>
Date: Wed, 10 Jul 2019 09:13:53 -0600

On 7/5/19 12:05 AM, Eli Zaretskii wrote:
>> From: Martin Sebor <[email-masked]>
>> Date: Thu, 4 Jul 2019 13:55:50 -0600
>>
>> Since the latest Fedora 29 update, while using the GUD many windows mode
>> and stepping in GDB into functions defined in other files than the
>> current one, Emacs will sometimes open the new file either by splitting
>> the current window, or sometimes in the input/output of gcc window.
>> Sometimes it seemingly abitrarily also resizes the windows and changes
>> the layout of the debugging session.  This makes debugging using GUD so
>> confusing that it's nearly unusable.  I end up using gdb-restore-windows
>> every few seconds to at least temporarily restore some sanity to the
>> layout.  Since the default layout isn't ideal for my use, I then have to
>> resize it to my preferred size only to have GUD screw it up again once I
>> step into a function in some other file.
> 
> Thanks, but could you please post a reproducible recipe starting from
> "emacs -Q" to exhibit the problem?  That would make looking into and
> fixing this problem much easier and more efficient.
> 
> I suspect the problem happens for certain frame and window dimensions,
> perhaps only when the frame in which you use gdb-mi is maximized?  But
> that's just a guess, and it would be good to have a recipe on which to
> work.

I am trying to reproduce it in a small test case but I'm all of
a sudden having trouble.  What's happening instead is that syntax
highlighting and indentation don't work in in some regions of code
but they work in others.  All the problems, including the window
resizing and files popping open in dedicated windows feel like they
have something to do with custom faces.  My setting is below.
Changing the font seems to have an effect (I'm just not sure
exactly what it is for which font).

My GUD frame isn't maximized.  Its geometry is set to 164x94 in
.Xresources.  My display is 3840x2160 in case that matters, and
my window manager is Cinnamon.

I'll keep trying to narrow it down to something more specific.

(custom-set-faces
  ;; custom-set-faces was added by Custom.
  ;; If you edit it by hand, you could mess it up, so be careful.
  ;; Your init file should contain only one such instance.
  ;; If there is more than one, they won't work right.
  '(default ((t (:inherit nil :stipple nil :background "cornsilk" 
:foreground "black" :inverse-video nil :box nil :strike-through nil 
:overline nil :underline nil :slant normal :weight normal :height 143 
:width normal :foundry "PfEd" :family "DejaVu Sans Mono"))))
  '(font-lock-builtin-face ((((class color) (background light)) (:bold t 
:foreground "NavyBlue"))))
  '(font-lock-comment-face ((((class color) (background light)) 
(:foreground "SteelBlue"))))
  '(font-lock-constant-face ((((class color) (background light)) 
(:foreground "Black"))))
  '(font-lock-keyword-face ((((class color) (background light)) (:bold t 
:foreground "NavyBlue"))))
  '(font-lock-string-face ((((class color) (background light)) 
(:foreground "SeaGreen"))))
  '(font-lock-type-face ((((class color) (background light)) (:bold t 
:foreground "NavyBlue"))))
  '(font-lock-variable-name-face ((((class color) (background light)) 
(:bold nil :foreground "Black"))))
  '(region ((((class color) (background light)) (:background "lightcyan"))))
  '(scroll-bar ((t (:background "grey75")))))