[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] emacs/src keymap.c
From: |
Kenichi Handa |
Subject: |
[Emacs-diffs] emacs/src keymap.c |
Date: |
Thu, 27 Nov 2008 08:02:03 +0000 |
CVSROOT: /cvsroot/emacs
Module name: emacs
Changes by: Kenichi Handa <handa> 08/11/27 08:02:03
Modified files:
src : keymap.c
Log message:
(describe_vector): Adjusted for the change of
char_table_ref_and_range. For char-table, put boundary between
non-ASCII and 8-bit characters.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/emacs/src/keymap.c?cvsroot=emacs&r1=1.376&r2=1.377
Patches:
Index: keymap.c
===================================================================
RCS file: /cvsroot/emacs/emacs/src/keymap.c,v
retrieving revision 1.376
retrieving revision 1.377
diff -u -b -r1.376 -r1.377
--- keymap.c 16 Jul 2008 19:23:49 -0000 1.376
+++ keymap.c 27 Nov 2008 08:02:02 -0000 1.377
@@ -3695,7 +3695,7 @@
int first = 1;
struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
/* Range of elements to be handled. */
- int from, to;
+ int from, to, stop;
Lisp_Object character;
int starting_i;
@@ -3725,9 +3725,12 @@
suppress = intern ("suppress-keymap");
from = 0;
- to = CHAR_TABLE_P (vector) ? MAX_CHAR + 1 : XVECTOR (vector)->size;
+ if (CHAR_TABLE_P (vector))
+ stop = MAX_5_BYTE_CHAR + 1, to = MAX_CHAR + 1;
+ else
+ stop = to = XVECTOR (vector)->size;
- for (i = from; i < to; i++)
+ for (i = from; ; i++)
{
int this_shadowed = 0;
int range_beg, range_end;
@@ -3735,10 +3738,21 @@
QUIT;
+ if (i == stop)
+ {
+ if (i == to)
+ break;
+ stop = to;
+ }
+
starting_i = i;
if (CHAR_TABLE_P (vector))
- val = char_table_ref_and_range (vector, i, &range_beg, &i);
+ {
+ range_beg = i;
+ i = stop - 1;
+ val = char_table_ref_and_range (vector, range_beg, &range_beg, &i);
+ }
else
val = AREF (vector, i);
definition = get_keyelt (val, 0);
@@ -3799,19 +3813,22 @@
insert1 (Fkey_description (kludge, prefix));
/* Find all consecutive characters or rows that have the same
- definition. But, for elements of a top level char table, if
- they are for charsets, we had better describe one by one even
- if they have the same definition. */
+ definition. But, VECTOR is a char-table, we had better put a
+ boundary between normal characters (-#x3FFF7F) and 8-bit
+ characters (#x3FFF80-). */
if (CHAR_TABLE_P (vector))
- while (i + 1 < to
- && (val = char_table_ref_and_range (vector, i + 1,
+ {
+ while (i + 1 < stop
+ && (range_beg = i + 1, range_end = stop - 1,
+ val = char_table_ref_and_range (vector, range_beg,
&range_beg, &range_end),
tem2 = get_keyelt (val, 0),
!NILP (tem2))
&& !NILP (Fequal (tem2, definition)))
i = range_end;
+ }
else
- while (i + 1 < to
+ while (i + 1 < stop
&& (tem2 = get_keyelt (AREF (vector, i + 1), 0),
!NILP (tem2))
&& !NILP (Fequal (tem2, definition)))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] emacs/src keymap.c,
Kenichi Handa <=