From: Eli Zaretskii Date: Sat, 25 Sep 2021 09:18:27 +0000 (+0300) Subject: Fix cursor motion around some Emoji sequences X-Git-Tag: emacs-28.0.90~654 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=297c9aa3deb64596b7ea19ae7d65a3ae614c7d2f;p=emacs.git Fix cursor motion around some Emoji sequences * src/character.h: Add TAG_SPACE and CANCEL_TAG to known Unicode characters values. * src/composite.c (char_composable_p): Recognize TAG characters relevant to Emoji as composable regardless of their General Category. (Bug#39799) --- diff --git a/src/character.h b/src/character.h index 1a745484daa..6ee6bcab205 100644 --- a/src/character.h +++ b/src/character.h @@ -82,6 +82,8 @@ enum LEFT_ANGLE_BRACKET = 0x3008, RIGHT_ANGLE_BRACKET = 0x3009, OBJECT_REPLACEMENT_CHARACTER = 0xFFFC, + TAG_SPACE = 0xE0020, + CANCEL_TAG = 0xE007F, }; extern int char_string (unsigned, unsigned char *); diff --git a/src/composite.c b/src/composite.c index e97f8e2b4cd..c37b1fd4b95 100644 --- a/src/composite.c +++ b/src/composite.c @@ -953,6 +953,9 @@ char_composable_p (int c) Lisp_Object val; return (c >= ' ' && (c == ZERO_WIDTH_NON_JOINER || c == ZERO_WIDTH_JOINER + /* Per Unicode TR51, these tag characters can be part of + Emoji sequences. */ + || (TAG_SPACE <= c && c <= CANCEL_TAG) /* unicode-category-table may not be available during dumping. */ || (CHAR_TABLE_P (Vunicode_category_table)