From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: jsbien@mimuw.edu.pl (Janusz S. =?UTF-8?Q?Bie=C5=84?=) Newsgroups: gmane.emacs.bugs Subject: bug#32599: 25.2; Feature request: input PUA characters by name Date: Wed, 30 Dec 2020 18:49:26 +0100 Message-ID: <87o8ibchg9.fsf@mimuw.edu.pl> References: <86sh30fg4q.fsf@mimuw.edu.pl> <868t4n3wbt.fsf@mimuw.edu.pl> <877ek72c7b.fsf@gmail.com> <868t4m3nrs.fsf@mimuw.edu.pl> <8736uu3eb3.fsf@gmail.com> <86r2iey9vk.fsf@mimuw.edu.pl> <867ead8wmd.fsf@mimuw.edu.pl> <83lfyt2s25.fsf@gnu.org> <86pno56y82.fsf@mimuw.edu.pl> <83a7f92lzr.fsf@gnu.org> <86woidyvbz.fsf@mimuw.edu.pl> <837ead2glo.fsf@gnu.org> <86woic4fd5.fsf@mimuw.edu.pl> <83r28j2560.fsf@gnu.org> <86muj7u789.fsf@mimuw.edu.pl> <83lfyr20tx.fsf@gnu.org> <86ftozf97u.fsf@mimuw.edu.pl> <78E3DB0A-BBAC-4822-B0B9-7A81CEC05D70@gnu.org> <86k1ebdtn9.fsf@mimuw.edu.pl> Reply-To: jsbien@mimuw.edu.pl Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="5605"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) Cc: 32599@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Wed Dec 30 18:50:18 2020 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kufc2-0001Lg-Jn for geb-bug-gnu-emacs@m.gmane-mx.org; Wed, 30 Dec 2020 18:50:18 +0100 Original-Received: from localhost ([::1]:52790 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kufc1-0004Hm-AG for geb-bug-gnu-emacs@m.gmane-mx.org; Wed, 30 Dec 2020 12:50:17 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:50446) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kufbm-0004Ha-VY for bug-gnu-emacs@gnu.org; Wed, 30 Dec 2020 12:50:06 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]:39366) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kufbm-0004YA-OG for bug-gnu-emacs@gnu.org; Wed, 30 Dec 2020 12:50:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1kufbm-0001cu-Lc for bug-gnu-emacs@gnu.org; Wed, 30 Dec 2020 12:50:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: jsbien@mimuw.edu.pl (Janusz S. =?UTF-8?Q?Bie=C5=84?=) Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 30 Dec 2020 17:50:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 32599 X-GNU-PR-Package: emacs Original-Received: via spool by 32599-submit@debbugs.gnu.org id=B32599.16093505746205 (code B ref 32599); Wed, 30 Dec 2020 17:50:02 +0000 Original-Received: (at 32599) by debbugs.gnu.org; 30 Dec 2020 17:49:34 +0000 Original-Received: from localhost ([127.0.0.1]:50912 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kufbK-0001c1-KK for submit@debbugs.gnu.org; Wed, 30 Dec 2020 12:49:34 -0500 Original-Received: from mail.mimuw.edu.pl ([193.0.96.6]:50473) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kufbI-0001bs-Qp for 32599@debbugs.gnu.org; Wed, 30 Dec 2020 12:49:33 -0500 Original-Received: from localhost (localhost [127.0.0.1]) by duch.mimuw.edu.pl (Postfix) with ESMTP id 7F031603730AC; Wed, 30 Dec 2020 18:49:31 +0100 (CET) X-Virus-Scanned: amavisd-new at mimuw.edu.pl Original-Received: from duch.mimuw.edu.pl ([127.0.0.1]) by localhost (mail.mimuw.edu.pl [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id 9CX7wrQLwtLq; Wed, 30 Dec 2020 18:49:27 +0100 (CET) Original-Received: from jsbdebian.mimuw.edu.pl (unknown [176.221.123.174]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by duch.mimuw.edu.pl (Postfix) with ESMTPSA; Wed, 30 Dec 2020 18:49:26 +0100 (CET) In-Reply-To: <86k1ebdtn9.fsf@mimuw.edu.pl> ("Janusz S. \=\?utf-8\?Q\?Bie\=C5\=84\?\= \=\?utf-8\?Q\?\=22's\?\= message of "Tue, 28 May 2019 07:39:54 +0200") X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:197042 Archived-At: Let me to approach the problem from another angle. Input of Unicode characters by name is done by "insert-char" defined in editfns.c. The code is quite short: --8<---------------cut here---------------start------------->8--- DEFUN ("insert-char", Finsert_char, Sinsert_char, 1, 3, "(list (read-char-by-name \"Insert character (Unicode name or hex): \")\ (prefix-numeric-value current-prefix-arg)\ t))", doc: /* Insert COUNT copies of CHARACTER. Interactively, prompt for CHARACTER. You can specify CHARACTER in one of these ways: - As its Unicode character name, e.g. \"LATIN SMALL LETTER A\". Completion is available; if you type a substring of the name preceded by an asterisk `*', Emacs shows all names which include that substring, not necessarily at the beginning of the name. [...] The optional third argument INHERIT, if non-nil, says to inherit text properties from adjoining text, if those properties are sticky. If called interactively, INHERIT is t. */) (Lisp_Object character, Lisp_Object count, Lisp_Object inherit) { int i, stringlen; register ptrdiff_t n; int c, len; unsigned char str[MAX_MULTIBYTE_LENGTH]; char string[4000]; CHECK_CHARACTER (character); if (NILP (count)) XSETFASTINT (count, 1); else CHECK_FIXNUM (count); c = XFIXNAT (character); if (!NILP (BVAR (current_buffer, enable_multibyte_characters))) len = CHAR_STRING (c, str); else str[0] = c, len = 1; if (XFIXNUM (count) <= 0) return Qnil; if (BUF_BYTES_MAX / len < XFIXNUM (count)) buffer_overflow (); n = XFIXNUM (count) * len; stringlen = min (n, sizeof string - sizeof string % len); for (i = 0; i < stringlen; i++) string[i] = str[i % len]; while (n > stringlen) { maybe_quit (); if (!NILP (inherit)) insert_and_inherit (string, stringlen); else insert (string, stringlen); n -= stringlen; } if (!NILP (inherit)) insert_and_inherit (string, n); else insert (string, n); return Qnil; } --8<---------------cut here---------------end--------------->8--- Which part of the code is responsible for prompting, name input and consulting the character names list? Best regards Janusz -- , Janusz S. Bien emeryt (emeritus) https://sites.google.com/view/jsbien