In realgud, there are fringe indicators used to show what position the debugged program is stopped at. However the face for the bit map is statically created and the background/foreground colors for it are set once when the lisp code is loaded, or run. Specifically:
(if (equal 'dark (frame-parameter nil 'background-mode)) (progn (defface realgud-overlay-arrow1 '((t :foreground "green" :weight bold)) "Fringe face for current position." :group 'realgud) ;; ... ) ;; else (progn (defface realgud-overlay-arrow1 '((t :foreground "black" :weight bold))) ;; ... ))
This has a problem that when a frame's background parameters are changed, this doesn't track that. It could also be the situation that
realgud was loaded say either from a frame or when emacs had a different dark/light background parameter than the one which a debugger is currently stopped at.
So how does one fix this?
Alternatively, it might be good to ditch the fringe setting altogether, but if that's done there should be a solution that works in a terminal without bitmap capabilities.
It also occurs to me that since this property is available under
list-faces-display, maybe the right thing is not to change this and wait for
realgud to become popular enough for various theme authors to decide to explicitly set that. Alternatively, I could set the colors based on some other more popular face setting, but I don't see something in
list-faces-display that sticks out. Thoughts here?