Subject: Re: bug#28312: 25.2; Arabic script changes when scrolling

From: Nick Helm <[email-masked]>
Date: Sun, 9 Jun 2019 23:56:22 +0000

Eli Zaretskii <[email-masked]> writes:

> I eventually found the culprit: it turned out we sometimes stop
> examining buffer text at arbitrary positions, and don't make sure
> these positions are never in the middle of a composable character
> sequence.  I implemented a solution, the patch is below.
> Unfortunately, it makes redisplay slower in buffers with lots of
> composable characters, so I hesitate to install it.
>
> Would people please try the patch and see if Emacs is still reasonably
> responsive in buffers with Arabic text, especially when marking or
> extending the region under transient-mark-mode?  If I get enough
> positive feedback, I will install this.  TIA.

I built yesterday's master and tested with and without the patch.

With the patch applied, I can confirm that the Arabic text in HELLO no
longer changes when scrolling, either with the keyboard or mouse.
However, I noticed that it still seems to change when extending the
region over Arabic text. That is, place point on the "c" of Arabic,
C-SPC, and C-f multiple times to extend the region and notice the
graphemes change. The mouse click and release method described up-thread
also shows the same thing. 

Next, I opened a file written entirely in Arabic (~3000 words). Without
the patch, scrolling works as expected in all cases I tried. With the
patch applied, scrolling also works as expected unless pixel-scroll-mode
is active and scrolling is done with the mouse. With that mode active,
mouse scrolling introduces lag that takes 3–4 seconds to recover after
each scroll action. I would describe the lag as significant. I did not
notice the text changing when scrolling or clicking in this file.

I didn't notice any problems with setting the mark or extending the
region in any tests, other than in the HELLO file described above. 

Thank you for working on this.

Nick