Subject: bug#57728: 29.0.50; Emacs writes wrong glyph at the bottom-right corner of text terminals

From: Akib Azmain Turja <[email-masked]>
Date: Sun, 11 Sep 2022 19:38:45 +0600

Eli Zaretskii <[email-masked]> writes:

>> Date: Sun, 11 Sep 2022 16:34:38 +0600
>> From:  Akib Azmain Turja via "Bug reports for GNU Emacs,
>>  the Swiss army knife of text editors" <[email-masked]>
>> 
>> Emacs often writes to the last character possibly by mistake.  To
>> reproduce, run emacs -Q, hit M-: (eval-expression), write some garbage
>> until the minibuffer window scrolls (I used (+ (% (random) 26) ?a) to
>> generate the garbage), and hit C-p until you scroll down a line.  You
>> should now see that the last character cell contains a continuation
>> ('\') glyph.  I think this is probably due to the use of any of 'il' or
>> 'il1' or 'rin' terminal capabilities.
>
> Thanks, but please provide more info:
>
>   . the exact recipe to try (I tried to follow the above, but
>     couldn't, I guess I misunderstand what you mean)
>   . on which terminal emulators this is known to happen, at least in
>     your case (and if you happen to know, also others)

I don't why my first message confused everyone, but I'll try to give a
clearer explanation:

Emacs often writes to the last character cell (i.e. the character cell
on the bottom-left corner)  possibly by mistake.  To
reproduce:

  1. Run emacs -Q.
  2. M-: (or any other command that asks for a string).
  3. Write some garbage until the minibuffer window scrolls.  (I used
     (dotimes (i 10000) (+ (% (random) 26) ?a)) to generate the garbage
     in *scratch* buffer and copied to the minibuffer, but you can write
     anything you want.)
  4. Scroll down a line.
  5. You should now see that the last character cell (i.e. the character
     cell on the bottom-left corner) contains a continuation ('\')
     glyph.  But Emacs doesn't dare to write to that character cell when
     'am' capability is defined, and my terminal have that capability
     defined.  I think this is probably due to the use of any of 'il' or
     'il1' or 'rin' capabilities.  Tested on Linux console, St, Xterm
     and Kitty.
  6. Scroll up two lines.
  7. The continuation glyph on the line before the last one doesn't
     appear.  Tested on Linux console, St, Xterm and Kitty.
  8. Scroll down more than two lines.
  9. Exit minibuffer.  The continuation glyph will still stay there on
     some terminals.  Tested on St, Kitty.

I hope this is clearer.

-- 
Akib Azmain Turja

Find me on Mastodon at @[email-masked].

This message is signed by me with my GnuPG key.  Its fingerprint is:

    7001 8CE5 819F 17A3 BBA6  66AF E74F 0EFA 922A E7F5