diff options
| author | Kenichi Handa | 2008-11-27 08:02:02 +0000 |
|---|---|---|
| committer | Kenichi Handa | 2008-11-27 08:02:02 +0000 |
| commit | bed6185fecbb1259d17bc65a9877350d35db6a16 (patch) | |
| tree | 0008185e880f7e60ec694c6347a198f7393b13d4 /src | |
| parent | 5b30be1a9d2860b8dc35be679fc378175bfb93a8 (diff) | |
| download | emacs-bed6185fecbb1259d17bc65a9877350d35db6a16.tar.gz emacs-bed6185fecbb1259d17bc65a9877350d35db6a16.zip | |
(describe_vector): Adjusted for the change of
char_table_ref_and_range. For char-table, put boundary between
non-ASCII and 8-bit characters.
Diffstat (limited to 'src')
| -rw-r--r-- | src/keymap.c | 41 |
1 files changed, 29 insertions, 12 deletions
diff --git a/src/keymap.c b/src/keymap.c index 4b8c5cc0aa0..753d1991a3e 100644 --- a/src/keymap.c +++ b/src/keymap.c | |||
| @@ -3695,7 +3695,7 @@ describe_vector (vector, prefix, args, elt_describer, | |||
| 3695 | int first = 1; | 3695 | int first = 1; |
| 3696 | struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; | 3696 | struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; |
| 3697 | /* Range of elements to be handled. */ | 3697 | /* Range of elements to be handled. */ |
| 3698 | int from, to; | 3698 | int from, to, stop; |
| 3699 | Lisp_Object character; | 3699 | Lisp_Object character; |
| 3700 | int starting_i; | 3700 | int starting_i; |
| 3701 | 3701 | ||
| @@ -3725,9 +3725,12 @@ describe_vector (vector, prefix, args, elt_describer, | |||
| 3725 | suppress = intern ("suppress-keymap"); | 3725 | suppress = intern ("suppress-keymap"); |
| 3726 | 3726 | ||
| 3727 | from = 0; | 3727 | from = 0; |
| 3728 | to = CHAR_TABLE_P (vector) ? MAX_CHAR + 1 : XVECTOR (vector)->size; | 3728 | if (CHAR_TABLE_P (vector)) |
| 3729 | stop = MAX_5_BYTE_CHAR + 1, to = MAX_CHAR + 1; | ||
| 3730 | else | ||
| 3731 | stop = to = XVECTOR (vector)->size; | ||
| 3729 | 3732 | ||
| 3730 | for (i = from; i < to; i++) | 3733 | for (i = from; ; i++) |
| 3731 | { | 3734 | { |
| 3732 | int this_shadowed = 0; | 3735 | int this_shadowed = 0; |
| 3733 | int range_beg, range_end; | 3736 | int range_beg, range_end; |
| @@ -3735,10 +3738,21 @@ describe_vector (vector, prefix, args, elt_describer, | |||
| 3735 | 3738 | ||
| 3736 | QUIT; | 3739 | QUIT; |
| 3737 | 3740 | ||
| 3741 | if (i == stop) | ||
| 3742 | { | ||
| 3743 | if (i == to) | ||
| 3744 | break; | ||
| 3745 | stop = to; | ||
| 3746 | } | ||
| 3747 | |||
| 3738 | starting_i = i; | 3748 | starting_i = i; |
| 3739 | 3749 | ||
| 3740 | if (CHAR_TABLE_P (vector)) | 3750 | if (CHAR_TABLE_P (vector)) |
| 3741 | val = char_table_ref_and_range (vector, i, &range_beg, &i); | 3751 | { |
| 3752 | range_beg = i; | ||
| 3753 | i = stop - 1; | ||
| 3754 | val = char_table_ref_and_range (vector, range_beg, &range_beg, &i); | ||
| 3755 | } | ||
| 3742 | else | 3756 | else |
| 3743 | val = AREF (vector, i); | 3757 | val = AREF (vector, i); |
| 3744 | definition = get_keyelt (val, 0); | 3758 | definition = get_keyelt (val, 0); |
| @@ -3799,19 +3813,22 @@ describe_vector (vector, prefix, args, elt_describer, | |||
| 3799 | insert1 (Fkey_description (kludge, prefix)); | 3813 | insert1 (Fkey_description (kludge, prefix)); |
| 3800 | 3814 | ||
| 3801 | /* Find all consecutive characters or rows that have the same | 3815 | /* Find all consecutive characters or rows that have the same |
| 3802 | definition. But, for elements of a top level char table, if | 3816 | definition. But, VECTOR is a char-table, we had better put a |
| 3803 | they are for charsets, we had better describe one by one even | 3817 | boundary between normal characters (-#x3FFF7F) and 8-bit |
| 3804 | if they have the same definition. */ | 3818 | characters (#x3FFF80-). */ |
| 3805 | if (CHAR_TABLE_P (vector)) | 3819 | if (CHAR_TABLE_P (vector)) |
| 3806 | while (i + 1 < to | 3820 | { |
| 3807 | && (val = char_table_ref_and_range (vector, i + 1, | 3821 | while (i + 1 < stop |
| 3822 | && (range_beg = i + 1, range_end = stop - 1, | ||
| 3823 | val = char_table_ref_and_range (vector, range_beg, | ||
| 3808 | &range_beg, &range_end), | 3824 | &range_beg, &range_end), |
| 3809 | tem2 = get_keyelt (val, 0), | 3825 | tem2 = get_keyelt (val, 0), |
| 3810 | !NILP (tem2)) | 3826 | !NILP (tem2)) |
| 3811 | && !NILP (Fequal (tem2, definition))) | 3827 | && !NILP (Fequal (tem2, definition))) |
| 3812 | i = range_end; | 3828 | i = range_end; |
| 3829 | } | ||
| 3813 | else | 3830 | else |
| 3814 | while (i + 1 < to | 3831 | while (i + 1 < stop |
| 3815 | && (tem2 = get_keyelt (AREF (vector, i + 1), 0), | 3832 | && (tem2 = get_keyelt (AREF (vector, i + 1), 0), |
| 3816 | !NILP (tem2)) | 3833 | !NILP (tem2)) |
| 3817 | && !NILP (Fequal (tem2, definition))) | 3834 | && !NILP (Fequal (tem2, definition))) |