Subject: Re: bug#36858: 27.0.50; display bugs with display-fill-column-indicator-mode

From: Ergus <[email-masked]>
Date: Wed, 7 Aug 2019 19:06:54 +0200

On Wed, Aug 07, 2019 at 07:37:04PM +0300, Eli Zaretskii wrote:
>> Date: Wed, 7 Aug 2019 18:20:33 +0200
>> From: Ergus <[email-masked]>
>> Cc: [email-masked], [email-masked]
>>
>> in this code (in xdisp.c):
>>
>> if (it->current_x < indicator_column_x)
>>   {
>>     it->face_id = merge_faces (it->w, Qextend_to_end_of_line,
>>                                0, extend_face_merged_id);
>>
>>     it->char_to_display = XFIXNAT (Vdisplay_fill_column_indicator_character);
>>     PRODUCE_GLYPHS (it);
>>
>>     it->face_id = extend_face_merged_id;
>> }
>>
>> I changed char_to_display:
>>
>> it->char_to_display = (it->glyph_row->ends_at_zv_p) ? '1' : '0';
>
>(There's no need to make any changes for that, you can simply invoke
>dump-glyph-row or dump-glyph-matrix.)
>
How is it?
>
>> And then I obtained the attached image.
>
>Right, I forgot where in the code we set that flag, and display of an
>after-string at EOB indeed happens before that.
>

This issue is already fixed with the other condition I mentioned:

IT_CHARPOS (*it) < ZV

But ends_at_zv_p this also need to be fixed because there are some tests
inside extend_face_to_end_of_line that compare with ends_at_zv_p. In the
worst case we need to remove these comparisons.

But ideally the flag must be set before right?

I think that there is another condition somewhere else that does not
call extend_face_to_end_of_line for the last line, probably due to the
same issue.

>But since Dmitry says the case of Company mode doesn't need to be
>fixed, I think this is a moot point now.  We should only solve the
>issue with attributes being extended all the way towards the indicator
>column.
>
Yes, I agree that we need to fix this first.

>Thanks.