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: Tue, 3 Sep 2019 14:17:30 +0200

> I found also that we where very concerned about what happen when
> merging, but there was not any comment about face_id changes in other
> cases (like reassign).

I don't know what reassign does but don't we have to redo all windows
in that case?

> For example, when we select a word in the middle of a line. The
> extend_face will be set to the region face when the iterator iterates
> throw the word, but then it shouldn't be extended at EOL.

Why would that be a problem?  The last stop position we care about
here is the end of the word (because that's where the region text
property terminates) and the region face should be long forgotten at
the end of the line.  Or what am I missing?

> So we are dealing with a 2D problem here. Iterate on X (the line) vs
> merging on Y (the face).

I don't see this as two-dimensional.  The iterator linearly iterates
through the buffer, re-contemplating faces at each stop position.

> So I am not sure we have a criteria about when to propagate the extend
> in both dimensions; because as I see in most of the cases the face_id in
> X changes due to reassign associated to text properties. So we have been
> talking all the time about the Y problem?
>
> maybe we should test only the last face in the line before EOL to check
> for the extend flag; but then the extend_face_id will be again an
> intrinsic parameter of that face.

The extend face to consider at any EOL is the extend face calculated
at the last stop position before that EOL (which sometimes might be
the beginning of the buffer).

martin



reply via email to

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