emacs-devel
[Top][All Lists]
Advanced

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

Re: Handling invisible text in bidirectional display


From: Eli Zaretskii
Subject: Re: Handling invisible text in bidirectional display
Date: Sun, 17 Jan 2010 21:06:05 +0200

> Date: Sun, 17 Jan 2010 09:59:17 +0100
> From: martin rudalics <address@hidden>
> CC: address@hidden, address@hidden
> 
>  >   abcABCxyz
> 
> Suppose I put an overlay from the position between "b" and "c" to the
> position between "A" and "B" (just like your invisibility property) and
> give that overlay a display property, say the character "D".
> 
>  > This would normally be displayed like this:
>  >
>  >   abcCBAxyz
> 
> Should we now see "abDxyz", "abDAxyz", "abDCBDxyz", or something else?

"abDCBxyz", I believe.  c and A are displayed as D, but the rest of
the characters should be visible.

> Note that the "D" is quite similar to the ellipses for invisible text
> you mentioned earlier.

No, it's different.  The ellipsis shows that some text is hidden, so
if we have several stretches of hidden text, it is reasonable to show
an ellipsis for each stretch.  By contrast, a display property says,
in effect, to display the string _instead_ of the entire text covered
by the overlay, so it should be displayed only once.

> BTW, I'm not even sure whether
> 
>  > The current code would skip C and x, and stop on y.  But because C is
>  > encountered when moving backwards from C to A, that causes us to miss
>  > A and B entirely and display
>  >
>  >   abcyz
>  >
>  > which is clearly incorrect.
> 
> _is_ "clearly incorrect".  Conversely, suppose I have the displayed text
> 
> abcCBAxyz
> 
> with `point' between "b" and "c" and `mark' between "C" and "B" - no
> overlays or text properties involved.  When I now kill the region what
> will show up on the kill ring - "cAB" or "cC"?

I didn't introduce a ``visual-order'' killing, so text is still killed
in the logical order.  Therefore, the characters that will be killed
and appear in the kill ring are cAB (displayed as "cBA"), and the
resulting display after killing will be "abCxyz".  Makes sense?




reply via email to

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