diff options
| author | Richard M. Stallman | 1999-04-06 19:36:02 +0000 |
|---|---|---|
| committer | Richard M. Stallman | 1999-04-06 19:36:02 +0000 |
| commit | b91f7a6f3514d374895d607e409115a0e4fe02a9 (patch) | |
| tree | c392af4252f216dc747fef38b41ed6dddc500c9c /src/keymap.c | |
| parent | 7fed4a7a15936a09bdd62ff8b78952437cd05979 (diff) | |
| download | emacs-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.c | 24 |
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 | } |