Mercurial > emacs
changeset 17189:7c008ec99e97
(describe_vector): Adjusted for the change of CHAR_TABLE_ORDINARY_SLOTS.
(push_key_description): A key code less than 512 is printed with 3
octal numbers. Print only entries of valid charsets.
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Tue, 18 Mar 1997 23:31:34 +0000 |
parents | e38cc84db8ab |
children | 6637001cdb4b |
files | src/keymap.c |
diffstat | 1 files changed, 18 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/src/keymap.c Tue Mar 18 23:31:34 1997 +0000 +++ b/src/keymap.c Tue Mar 18 23:31:34 1997 +0000 @@ -1598,16 +1598,13 @@ else if (c < 128) *p++ = c; else if (c < 256) + *p++ = c; + else if (c < 512) { - if (current_buffer->enable_multibyte_characters) - *p++ = c; - else - { - *p++ = '\\'; - *p++ = (7 & (c >> 6)) + '0'; - *p++ = (7 & (c >> 3)) + '0'; - *p++ = (7 & (c >> 0)) + '0'; - } + *p++ = '\\'; + *p++ = (7 & (c >> 6)) + '0'; + *p++ = (7 & (c >> 3)) + '0'; + *p++ = (7 & (c >> 0)) + '0'; } else { @@ -2564,7 +2561,10 @@ /* A char-table is not that deep. */ wrong_type_argument (Qchar_table_p, vector); - for (i = 0; i < this_level; i++) + /* For multibyte characters, the top level index for + charsets starts from 256. */ + idx[0] = XINT (XVECTOR (elt_prefix)->contents[0]) - 128; + for (i = 1; i < this_level; i++) idx[i] = XINT (XVECTOR (elt_prefix)->contents[i]); complete_char = (CHARSET_VALID_P (idx[0]) @@ -2593,8 +2593,13 @@ for (i = from; i < to; i++) { QUIT; + + if (this_level == 0 + && i >= CHAR_TABLE_SINGLE_BYTE_SLOTS + && !CHARSET_DEFINED_P (i - 128)) + continue; + definition = get_keyelt (XVECTOR (vector)->contents[i], 0); - if (NILP (definition)) continue; /* Don't mention suppressed commands. */ @@ -2681,12 +2686,12 @@ if (multibyte && CHAR_TABLE_P (vector) && CHAR_TABLE_P (definition)) { if (this_level == 0 - && CHARSET_VALID_P (i)) + && CHARSET_VALID_P (i - 128)) { /* Before scanning the deeper table, print the information for this character set. */ insert_string ("\t\t<charset:"); - tem2 = CHARSET_TABLE_INFO (i, CHARSET_SHORT_NAME_IDX); + tem2 = CHARSET_TABLE_INFO (i - 128, CHARSET_SHORT_NAME_IDX); insert_from_string (tem2, 0 , XSTRING (tem2)->size, 0); insert (">", 1); }