emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Question about display engine


From: martin rudalics
Subject: Re: Question about display engine
Date: Fri, 6 Sep 2019 10:22:48 +0200

Thanks for the new patch.  It applies and Emacs builds here on Windows
without problems.

> The issue is actually related with the fact that
> extend_face_id is never restarted to face_id when going back from an
> extend to a non_extend face between lines (for example when mark is
> active and the iterator crosses the pointer to outside the selected
> region like in the picture).

The end of the region is a stop position for the iterator.  It can
occur in the middle of a line, so handling this problem at the
beginning of a display line would be neither sufficient nor useful.
When the stop position coinciding with the end of the region is
processed, the extend_face_id has to be reset to some new face_id at
that position.

I'm yet too silly to understand your patch so I cannot figure out
where this should happen.  But the following parts appear somehow
suspicious:

          /* Update the faces id and extend.  */
          it->face_id = new_face_id;

          if (FACE_EXTENSIBLE_P (new_face))
            it->extend_face_id = new_face_id;

At the end of the region this may get you a new_face that is not
extensible.  But that means that you do not reset it->extend_face_id
although you should (IMHO).

Just to make sure that we see the same things: Is my interpretation
correct that in your screenshot you use blue for the region and black
as default background and the regions starts at line 9 of your window?

martin



reply via email to

[Prev in Thread] Current Thread [Next in Thread]