[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#32599: 25.2; Feature request: input PUA characters by name
From: |
Janusz S. Bień |
Subject: |
bug#32599: 25.2; Feature request: input PUA characters by name |
Date: |
Wed, 30 Dec 2020 18:49:26 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) |
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
- bug#32599: 25.2; Feature request: input PUA characters by name,
Janusz S. Bień <=
- bug#32599: 25.2; Feature request: input PUA characters by name, Eli Zaretskii, 2020/12/30
- bug#32599: 25.2; Feature request: input PUA characters by name, Janusz S. Bień, 2020/12/31
- bug#32599: 25.2; Feature request: input PUA characters by name, Eli Zaretskii, 2020/12/31
- bug#32599: 25.2; Feature request: input PUA characters by name, Janusz S. Bień, 2020/12/31
- bug#32599: 25.2; Feature request: input PUA characters by name, Eli Zaretskii, 2020/12/31
- bug#32599: 25.2; Feature request: input PUA characters by name, Janusz S. Bień, 2020/12/31
- bug#32599: 25.2; Feature request: input PUA characters by name, Eli Zaretskii, 2020/12/31