mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-23 07:19:15 +00:00
(Faccessible_keymaps): Really initialize i_byte.
Convert 0200 to meta only in a unibyte string. (Fkey_description): Likewise.
This commit is contained in:
parent
7fed4a7a15
commit
b91f7a6f35
24
src/keymap.c
24
src/keymap.c
@ -1472,15 +1472,17 @@ then the value includes only maps for prefixes that start with PREFIX.")
|
||||
Lisp_Object copy;
|
||||
|
||||
copy = Fmake_vector (make_number (XSTRING (prefix)->size), Qnil);
|
||||
for (i = 0, i_byte; i < XSTRING (prefix)->size;)
|
||||
for (i = 0, i_byte = 0; i < XSTRING (prefix)->size;)
|
||||
{
|
||||
int i_before = i;
|
||||
if (STRING_MULTIBYTE (prefix))
|
||||
FETCH_STRING_CHAR_ADVANCE (c, prefix, i, i_byte);
|
||||
else
|
||||
c = XSTRING (prefix)->data[i++];
|
||||
if (c & 0200)
|
||||
c ^= 0200 | meta_modifier;
|
||||
{
|
||||
c = XSTRING (prefix)->data[i++];
|
||||
if (c & 0200)
|
||||
c ^= 0200 | meta_modifier;
|
||||
}
|
||||
XVECTOR (copy)->contents[i_before] = make_number (c);
|
||||
}
|
||||
prefix = copy;
|
||||
@ -1704,7 +1706,7 @@ spaces are put between sequence elements, etc.")
|
||||
{
|
||||
Lisp_Object vector;
|
||||
vector = Fmake_vector (Flength (keys), Qnil);
|
||||
for (i = 0; i < XSTRING (keys)->size; )
|
||||
for (i = 0, i_byte = 0; i < XSTRING (keys)->size; )
|
||||
{
|
||||
int c;
|
||||
int i_before = i;
|
||||
@ -1712,13 +1714,13 @@ spaces are put between sequence elements, etc.")
|
||||
if (STRING_MULTIBYTE (keys))
|
||||
FETCH_STRING_CHAR_ADVANCE (c, keys, i, i_byte);
|
||||
else
|
||||
c = XSTRING (keys)->data[i++];
|
||||
{
|
||||
c = XSTRING (keys)->data[i++];
|
||||
if (c & 0200)
|
||||
c ^= 0200 | meta_modifier;
|
||||
}
|
||||
|
||||
if (c & 0x80)
|
||||
XSETFASTINT (XVECTOR (vector)->contents[i_before],
|
||||
meta_modifier | (c & ~0x80));
|
||||
else
|
||||
XSETFASTINT (XVECTOR (vector)->contents[i_before], c);
|
||||
XSETFASTINT (XVECTOR (vector)->contents[i_before], c);
|
||||
}
|
||||
keys = vector;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user