Subject: bug#77313: 30.1.50; Regression: flymake indicators are erroneously using margins

From: Spencer Baugh <[email-masked]>
Date: Tue, 08 Apr 2025 10:29:59 -0400

Eli Zaretskii <[email-masked]> writes:

>> From: Spencer Baugh <[email-masked]>
>> Cc: [email-masked],  [email-masked]
>> Date: Tue, 08 Apr 2025 08:46:17 -0400
>> 
>> Here's an updated version of my previous patch which avoids the need for
>> a new variant in the defcustom.  When flymake-indicator-type is set to
>> fringes and we're on a text frame, we simply fall back to using margins.
>> That allows it to be set to fringes by default without losing
>> functionality for text terminals; this is how this should have been
>> implemented originally.
>
> I think we should also fall back on using margins if the fringes are
> disabled on GUI frames.

Disabled how?  I don't see a way to disable the fringe.  Do you mean
when the fringe width is set to 0?  So are you suggesting we should call
window-fringes and check the width of the fringe we're going to use?  I
can do that, just want to confirm.

>> -(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)
>> +`fringes' (use fringes) or `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"
>
> The :version should change, since the default value changes.

Will update these in the next version.