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.
Edit:
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?