aboutsummaryrefslogtreecommitdiffstats
path: root/src/keymap.c
diff options
context:
space:
mode:
authorRichard M. Stallman1999-04-06 19:36:02 +0000
committerRichard M. Stallman1999-04-06 19:36:02 +0000
commitb91f7a6f3514d374895d607e409115a0e4fe02a9 (patch)
treec392af4252f216dc747fef38b41ed6dddc500c9c /src/keymap.c
parent7fed4a7a15936a09bdd62ff8b78952437cd05979 (diff)
downloademacs-b91f7a6f3514d374895d607e409115a0e4fe02a9.tar.gz
emacs-b91f7a6f3514d374895d607e409115a0e4fe02a9.zip
(Faccessible_keymaps): Really initialize i_byte.
Convert 0200 to meta only in a unibyte string. (Fkey_description): Likewise.
Diffstat (limited to 'src/keymap.c')
-rw-r--r--src/keymap.c24
1 files changed, 13 insertions, 11 deletions
diff --git a/src/keymap.c b/src/keymap.c
index 612e34773ef..dbbbafbcf7d 100644
--- a/src/keymap.c
+++ b/src/keymap.c
@@ -1472,15 +1472,17 @@ then the value includes only maps for prefixes that start with PREFIX.")
1472 Lisp_Object copy; 1472 Lisp_Object copy;
1473 1473
1474 copy = Fmake_vector (make_number (XSTRING (prefix)->size), Qnil); 1474 copy = Fmake_vector (make_number (XSTRING (prefix)->size), Qnil);
1475 for (i = 0, i_byte; i < XSTRING (prefix)->size;) 1475 for (i = 0, i_byte = 0; i < XSTRING (prefix)->size;)
1476 { 1476 {
1477 int i_before = i; 1477 int i_before = i;
1478 if (STRING_MULTIBYTE (prefix)) 1478 if (STRING_MULTIBYTE (prefix))
1479 FETCH_STRING_CHAR_ADVANCE (c, prefix, i, i_byte); 1479 FETCH_STRING_CHAR_ADVANCE (c, prefix, i, i_byte);
1480 else 1480 else
1481 c = XSTRING (prefix)->data[i++]; 1481 {
1482 if (c & 0200) 1482 c = XSTRING (prefix)->data[i++];
1483 c ^= 0200 | meta_modifier; 1483 if (c & 0200)
1484 c ^= 0200 | meta_modifier;
1485 }
1484 XVECTOR (copy)->contents[i_before] = make_number (c); 1486 XVECTOR (copy)->contents[i_before] = make_number (c);
1485 } 1487 }
1486 prefix = copy; 1488 prefix = copy;
@@ -1704,7 +1706,7 @@ spaces are put between sequence elements, etc.")
1704 { 1706 {
1705 Lisp_Object vector; 1707 Lisp_Object vector;
1706 vector = Fmake_vector (Flength (keys), Qnil); 1708 vector = Fmake_vector (Flength (keys), Qnil);
1707 for (i = 0; i < XSTRING (keys)->size; ) 1709 for (i = 0, i_byte = 0; i < XSTRING (keys)->size; )
1708 { 1710 {
1709 int c; 1711 int c;
1710 int i_before = i; 1712 int i_before = i;
@@ -1712,13 +1714,13 @@ spaces are put between sequence elements, etc.")
1712 if (STRING_MULTIBYTE (keys)) 1714 if (STRING_MULTIBYTE (keys))
1713 FETCH_STRING_CHAR_ADVANCE (c, keys, i, i_byte); 1715 FETCH_STRING_CHAR_ADVANCE (c, keys, i, i_byte);
1714 else 1716 else
1715 c = XSTRING (keys)->data[i++]; 1717 {
1718 c = XSTRING (keys)->data[i++];
1719 if (c & 0200)
1720 c ^= 0200 | meta_modifier;
1721 }
1716 1722
1717 if (c & 0x80) 1723 XSETFASTINT (XVECTOR (vector)->contents[i_before], c);
1718 XSETFASTINT (XVECTOR (vector)->contents[i_before],
1719 meta_modifier | (c & ~0x80));
1720 else
1721 XSETFASTINT (XVECTOR (vector)->contents[i_before], c);
1722 } 1724 }
1723 keys = vector; 1725 keys = vector;
1724 } 1726 }