unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#56952: 29.0.50; Emoji skin-tone modifiers disrupt terminal output
@ 2022-08-03 13:42 J.P.
  2022-08-03 14:28 ` Eli Zaretskii
  0 siblings, 1 reply; 6+ messages in thread
From: J.P. @ 2022-08-03 13:42 UTC (permalink / raw)
  To: 56952

[-- Attachment #1: Type: text/plain, Size: 3870 bytes --]

I use graphical Emacs, so this may be pilot error or some external issue
I'm mistaking for an Emacs one. Steps to reproduce:

- emacs -Q -nw
- In *scratch*, M-:

  (dotimes (_ 10) (insert ";; \U0001f9dc\U0001f3fc 12345\n\n\n\n\n\n"))

- Make entire buffer the active region (put mark at BOB and point at EOB)
- Scroll down (M-v) once or twice
- Gaps appear in the mode line and visual artifacts elsewhere

AFAICT, the two inserted characters can be any valid emoji/modifier
combination. Additional leading or trailing emojis (or other characters,
like ZWJ \u200d or VS-16 \ufe0f) don't seem to affect the result.

This was initially noticed on an Alacritty terminal emulator displaying
a remote Emacs 28. The session in the screenshot below was run in a
stock VM image [1] with only Emacs 29 installed:

~$ env | grep -i term
COLORTERM=truecolor
GNOME_TERMINAL_SCREEN=/org/gnome/Terminal/screen/06526de0_c54d_497a_b95f_7e039a886d02
TERM=xterm-256color
GNOME_TERMINAL_SERVICE=:1.95

~$ uname -r
5.10.0-16-amd64

~$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

[1] https://builder.libguestfs.org/index.asc


In GNU Emacs 29.0.50 (build 1, x86_64-pc-linux-gnu)
 of 2022-08-03 built on debianbullseye
Repository revision: 4f3e95bed523be11f3be7b791c6ae909ffa77a8d
Repository branch: master
System Description: Debian GNU/Linux 11 (bullseye)

Configured using:
 'configure --without-x'

Configured features:
ACL DBUS GMP GNUTLS MODULES NOTIFY INOTIFY PDUMPER SECCOMP SOUND THREADS

Important settings:
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

Major mode: Lisp Interaction

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  line-number-mode: t
  indent-tabs-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug message mailcap yank-media puny dired
dnd dired-loaddefs rfc822 mml mml-sec password-cache epa derived epg
rfc6068 epg-config gnus-util text-property-search time-date subr-x
mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils
mailheader cl-loaddefs cl-lib sendmail rfc2047 rfc2045 ietf-drums
mm-util mail-prsvr mail-utils term/xterm xterm byte-opt gv bytecomp
byte-compile cconv regexp-opt rmc iso-transl tooltip eldoc paren
electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode
tabulated-list replace newcomment text-mode lisp-mode prog-mode register
page tab-bar menu-bar rfn-eshadow isearch easymenu timer select mouse
jit-lock font-lock syntax font-core term/tty-colors frame minibuffer
nadvice seq simple cl-generic indonesian philippine cham georgian
utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean
japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european
ethiopic indian cyrillic chinese composite emoji-zwj charscript charprop
case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure
cl-preloaded button loaddefs faces cus-face macroexp files window
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget keymap hashtable-print-readable backquote threads dbusbind
inotify multi-tty make-network-process emacs)

Memory information:
((conses 16 47267 10255)
 (symbols 48 5661 0)
 (strings 32 15261 1789)
 (string-bytes 1 495339)
 (vectors 16 8381)
 (vector-slots 8 102650 6988)
 (floats 8 24 36)
 (intervals 56 181 12)
 (buffers 992 10))

[-- Attachment #2: bug_report_terminal.png --]
[-- Type: image/png, Size: 44376 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#56952: 29.0.50; Emoji skin-tone modifiers disrupt terminal output
  2022-08-03 13:42 bug#56952: 29.0.50; Emoji skin-tone modifiers disrupt terminal output J.P.
@ 2022-08-03 14:28 ` Eli Zaretskii
  2022-08-03 19:42   ` J.P.
  0 siblings, 1 reply; 6+ messages in thread
From: Eli Zaretskii @ 2022-08-03 14:28 UTC (permalink / raw)
  To: J.P.; +Cc: 56952

> From: "J.P." <jp@neverwas.me>
> Date: Wed, 03 Aug 2022 06:42:08 -0700
> 
> - emacs -Q -nw
> - In *scratch*, M-:
> 
>   (dotimes (_ 10) (insert ";; \U0001f9dc\U0001f3fc 12345\n\n\n\n\n\n"))
> 
> - Make entire buffer the active region (put mark at BOB and point at EOB)
> - Scroll down (M-v) once or twice
> - Gaps appear in the mode line and visual artifacts elsewhere
> 
> AFAICT, the two inserted characters can be any valid emoji/modifier
> combination. Additional leading or trailing emojis (or other characters,
> like ZWJ \u200d or VS-16 \ufe0f) don't seem to affect the result.
> 
> This was initially noticed on an Alacritty terminal emulator displaying
> a remote Emacs 28. The session in the screenshot below was run in a
> stock VM image [1] with only Emacs 29 installed:

On a TTY Emacs expects the terminal emulator to DTRT with composable
sequences.  Some emulators don't, so you need to turn off
auto-composition-mode for those.  (The value of auto-composition-mode
can be a string naming the terminal where to disable it
automatically.)





^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#56952: 29.0.50; Emoji skin-tone modifiers disrupt terminal output
  2022-08-03 14:28 ` Eli Zaretskii
@ 2022-08-03 19:42   ` J.P.
  2022-08-04  5:28     ` Eli Zaretskii
  0 siblings, 1 reply; 6+ messages in thread
From: J.P. @ 2022-08-03 19:42 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 56952-done

Eli Zaretskii <eliz@gnu.org> writes:

> On a TTY Emacs expects the terminal emulator to DTRT with composable
> sequences.  Some emulators don't, so you need to turn off
> auto-composition-mode for those.  (The value of auto-composition-mode
> can be a string naming the terminal where to disable it
> automatically.)

Ah, gotcha. That indeed does the trick. Thanks. Closing.





^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#56952: 29.0.50; Emoji skin-tone modifiers disrupt terminal output
  2022-08-03 19:42   ` J.P.
@ 2022-08-04  5:28     ` Eli Zaretskii
  2022-08-04 12:55       ` J.P.
  0 siblings, 1 reply; 6+ messages in thread
From: Eli Zaretskii @ 2022-08-04  5:28 UTC (permalink / raw)
  To: J.P.; +Cc: 56952

> From: "J.P." <jp@neverwas.me>
> Cc: 56952-done@debbugs.gnu.org
> Date: Wed, 03 Aug 2022 12:42:32 -0700
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> > On a TTY Emacs expects the terminal emulator to DTRT with composable
> > sequences.  Some emulators don't, so you need to turn off
> > auto-composition-mode for those.  (The value of auto-composition-mode
> > can be a string naming the terminal where to disable it
> > automatically.)
> 
> Ah, gotcha. That indeed does the trick. Thanks. Closing.

Can you tell which value of auto-composition-mode did the trick?  Or
what is the value of tty-type on that terminal?  And which file in
lisp/term/ does Alacritty load when you start the -nw session?  I'm
asking because perhaps we should disable auto-composition-mode by
default on this terminal, like we do for the Linux console.

Thanks.





^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#56952: 29.0.50; Emoji skin-tone modifiers disrupt terminal output
  2022-08-04  5:28     ` Eli Zaretskii
@ 2022-08-04 12:55       ` J.P.
  2022-08-06 16:20         ` Eli Zaretskii
  0 siblings, 1 reply; 6+ messages in thread
From: J.P. @ 2022-08-04 12:55 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 56952

Eli Zaretskii <eliz@gnu.org> writes:

> Can you tell which value of auto-composition-mode did the trick? Or
> what is the value of tty-type on that terminal?

On Alacritty 0.10.1 (with the example configuration loaded) `tty-type'
returns "alacritty". And doing

  (setq-default auto-composition-mode "alacritty")

inhibits auto composition. Similarly, on GNOME Terminal 3.38.3 (as
preconfigured by Debian bullseye) `tty-type' returns "xterm-256color",
and setting `auto-composition-mode' to the latter works as expected.

> And which file in lisp/term/ does Alacritty load when you start the
> -nw session?

It loads lisp/term/xterm.el, I guess because `term-file-aliases' maps
"alacritty" to "xterm". (GNOME Terminal also loads that file.)

> I'm asking because perhaps we should disable auto-composition-mode by
> default on this terminal, like we do for the Linux console.

For the virtual console, that certainly makes sense (bug#50865). As for
which terminal emulators support such composition, that'd likely take
some legwork to determine. (Alacritty, for one, seems to have pegged
this feature as low priority [1].) If special casing seems premature, I
guess there's precedent for describing such issues in etc/PROBLEMS, as
was done with Kitty (bug#50983).

[1] https://github.com/alacritty/alacritty/issues/3975





^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#56952: 29.0.50; Emoji skin-tone modifiers disrupt terminal output
  2022-08-04 12:55       ` J.P.
@ 2022-08-06 16:20         ` Eli Zaretskii
  0 siblings, 0 replies; 6+ messages in thread
From: Eli Zaretskii @ 2022-08-06 16:20 UTC (permalink / raw)
  To: J.P.; +Cc: 56952-done

> From: "J.P." <jp@neverwas.me>
> Cc: 56952@debbugs.gnu.org
> Date: Thu, 04 Aug 2022 05:55:45 -0700
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> > Can you tell which value of auto-composition-mode did the trick? Or
> > what is the value of tty-type on that terminal?
> 
> On Alacritty 0.10.1 (with the example configuration loaded) `tty-type'
> returns "alacritty". And doing
> 
>   (setq-default auto-composition-mode "alacritty")
> 
> inhibits auto composition. Similarly, on GNOME Terminal 3.38.3 (as
> preconfigured by Debian bullseye) `tty-type' returns "xterm-256color",
> and setting `auto-composition-mode' to the latter works as expected.
> 
> > And which file in lisp/term/ does Alacritty load when you start the
> > -nw session?
> 
> It loads lisp/term/xterm.el, I guess because `term-file-aliases' maps
> "alacritty" to "xterm". (GNOME Terminal also loads that file.)
> 
> > I'm asking because perhaps we should disable auto-composition-mode by
> > default on this terminal, like we do for the Linux console.
> 
> For the virtual console, that certainly makes sense (bug#50865). As for
> which terminal emulators support such composition, that'd likely take
> some legwork to determine. (Alacritty, for one, seems to have pegged
> this feature as low priority [1].) If special casing seems premature, I
> guess there's precedent for describing such issues in etc/PROBLEMS, as
> was done with Kitty (bug#50983).

Thanks.  Done as you suggested, and closing.





^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2022-08-06 16:20 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-08-03 13:42 bug#56952: 29.0.50; Emoji skin-tone modifiers disrupt terminal output J.P.
2022-08-03 14:28 ` Eli Zaretskii
2022-08-03 19:42   ` J.P.
2022-08-04  5:28     ` Eli Zaretskii
2022-08-04 12:55       ` J.P.
2022-08-06 16:20         ` Eli Zaretskii

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).