Subject: Re: bug#28646: 25.2; Emoji BED cannot be inserted with its name

From: Robert Pluim <[email-masked]>
Date: Fri, 29 Sep 2017 17:48:53 +0200

[email-masked] writes:

> Typing 'C-x 8 RET B E D RET' inserts #xBED(TAMIL DIGIT SEVEN).
> Emoji #x1F6CF(BED) cannot be inserted with its name.
> Although the completion list for insert-char with 'BE' includes Emoji BED,
> the result of clicking 'BED' is TAMIL DIGIT SEVEN.

Indeed it is. 25.3 behaves the same, but 26 correctly inserts #x1F6CF.

I've bisected it down to the following commit, which changed the
interpretation of 'BED' to be less surprising.

You can either upgrade to the not-yet-released emacs-26, or try
applying this commit locally (if you build your own emacs)

commit 86d083438dba60dc00e9e96414bf7e832720c05a (HEAD)
Author:     Paul Eggert <[email-masked]>
AuthorDate: Mon Apr 25 10:41:29 2016 -0700
Commit:     Paul Eggert <[email-masked]>
CommitDate: Mon Apr 25 10:42:48 2016 -0700

    New function ‘char-from-name’
    
    This also fixes the mishandling of "\N{CJK COMPATIBILITY
    IDEOGRAPH-F900}", "\N{VARIATION SELECTOR-1}", etc.
    Problem reported by Eli Zaretskii in:
    http://lists.gnu.org/archive/html/emacs-devel/2016-04/msg00614.html
    * doc/lispref/nonascii.texi (Character Codes), etc/NEWS: Document this.
    * lisp/international/mule-cmds.el (char-from-name): New function.
    (read-char-by-name): Use it.  Document that "BED" is treated as
    a name, not as a hexadecimal number.  Reject out-of-range integers,
    floating-point numbers, and strings with trailing junk.
    * src/lread.c (character_name_to_code): Call char-from-name
    instead of inspecting ucs-names directly, so that we handle
    computed names like "VARIATION SELECTOR-1".  Do not use an auto
    string, since char-from-name might GC.
    * test/src/lread-tests.el: Add tests for new behavior, and
    fix some old tests that were wrong.

Regards

Robert