1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-03-27 01:01:52 -07:00

Backport: fix flymake margin indicator fallback logic

Backport 861e7f8b60 to fix bug#77313, so
that fringe indicators are once again reliably the default on frames
that support them.

Do not merge to master.

* lisp/progmodes/flymake.el (flymake-indicator-type)
(flymake-mode): Fix margin fallback behavior.
This commit is contained in:
Spencer Baugh 2025-04-17 16:22:08 -04:00 committed by Eli Zaretskii
parent 2a45f0bceb
commit cc52c1e1d0

View file

@ -185,22 +185,23 @@ See `flymake-error-bitmap' and `flymake-warning-bitmap'."
(const right-fringe)
(const :tag "No fringe indicators" nil)))
(defcustom flymake-indicator-type (if (display-graphic-p)
'fringes
'margins)
(defcustom flymake-indicator-type 'fringes
"Indicate which indicator type to use for display errors.
The value can be nil (don't indicate errors but just highlight them),
fringes (use fringes) or margins (use margins)
the symbol `fringes' (use fringes) or the symbol `margins' (use
margins).
Difference between fringes and margin is that fringes support displaying
bitmaps on graphical displays and margins display text in a blank area
from current buffer that works in both graphical and text displays.
Thus, even when `fringes' is selected, margins will still be used on
text displays and also when fringes are disabled.
See Info node `Fringes' and Info node `(elisp)Display Margins'."
:version "30.1"
:version "30.2"
:type '(choice (const :tag "Use Fringes" fringes)
(const :tag "Use Margins "margins)
(const :tag "Use Margins" margins)
(const :tag "No indicators" nil)))
(defcustom flymake-margin-indicators-string
@ -1393,6 +1394,13 @@ special *Flymake log* buffer." :group 'flymake :lighter
(add-hook 'kill-buffer-hook 'flymake-kill-buffer-hook nil t)
(add-hook 'eldoc-documentation-functions 'flymake-eldoc-function t t)
(when (and (eq flymake-indicator-type 'fringes)
(not (cl-case flymake-fringe-indicator-position
(left-fringe (< 0 (nth 0 (window-fringes))))
(right-fringe (< 0 (nth 1 (window-fringes)))))))
;; There are no fringes in the buffer, fallback to margins.
(setq-local flymake-indicator-type 'margins))
;; AutoResize margins.
(flymake--resize-margins)