On Wed, Aug 07, 2019 at 08:29:13PM +0300, Eli Zaretskii wrote:
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.
Not sure I understand why the comparisons need to be removed. Can you
elaborate?
But ideally the flag must be set before right?
In a buffer showing only buffer text (no after-strings at EOB), all
the glyph rows starting from the one showing EOB have their
ends_at_zv_p flag set.
Hi:
In my tests inside extend_face_to_end_of_line the flag ends_at_zv_p is
always false. And for the last line (where it is supposed to be true)
the function extend_face_to_end_of_line is not called at all. So
actually all the code like:
if (it->glyph_row->ends_at_zv_p)
it->face_id = default_face->id;
else
it->face_id = face->id;
does nothing now.
We should fix this in order to create an indicator also for the last
line.
I think that the problem is in the condition:
if (!get_next_display_element (it)) inside display_line that filters the
call to extend_face_to_end_of_line with:
if (row->reversed_p
|| lookup_basic_face (it->w, it->f, DEFAULT_FACE_ID) !=
DEFAULT_FACE_ID)
extend_face_to_end_of_line (it);
And needs to be extended probably with with:
|| (!row_text_area_empty (row))