errors or warnings.
Depending on your preference, this can either use @code{fringes} or
@code{margins} for indicating errors.
+If set to @code{fringes} (the default), it will automatically fall back
+to using margins in windows or frames without fringes, such as text
+terminals.
@item flymake-error-bitmap
A bitmap used in the fringe to mark lines for which an error has
(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 "31.1"
: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
(add-hook 'after-change-functions 'flymake-after-change-function nil t)
(add-hook 'dwim-hook 'flymake-dwim-fix nil 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)