aboutsummaryrefslogtreecommitdiffstats
path: root/src/keymap.c
diff options
context:
space:
mode:
authorKenichi Handa2008-11-27 08:02:02 +0000
committerKenichi Handa2008-11-27 08:02:02 +0000
commitbed6185fecbb1259d17bc65a9877350d35db6a16 (patch)
tree0008185e880f7e60ec694c6347a198f7393b13d4 /src/keymap.c
parent5b30be1a9d2860b8dc35be679fc378175bfb93a8 (diff)
downloademacs-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/keymap.c')
-rw-r--r--src/keymap.c41
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)))