projects
/
chise
/
xemacs-chise.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
update.
[chise/xemacs-chise.git]
/
src
/
insdel.c
diff --git
a/src/insdel.c
b/src/insdel.c
index
08d191d
..
95e59dc
100644
(file)
--- a/
src/insdel.c
+++ b/
src/insdel.c
@@
-219,7
+219,9
@@
Boston, MA 02111-1307, USA. */
#define MAX_BUFPOS_GAP_SIZE_3 (65535/3)
#define MAX_BYTIND_GAP_SIZE_3 (3 * MAX_BUFPOS_GAP_SIZE_3)
#define MAX_BUFPOS_GAP_SIZE_3 (65535/3)
#define MAX_BYTIND_GAP_SIZE_3 (3 * MAX_BUFPOS_GAP_SIZE_3)
+#ifndef UTF2000
short three_to_one_table[1 + MAX_BYTIND_GAP_SIZE_3];
short three_to_one_table[1 + MAX_BYTIND_GAP_SIZE_3];
+#endif
/* Various macros modelled along the lines of those in buffer.h.
Purposefully omitted from buffer.h because files other than this
/* Various macros modelled along the lines of those in buffer.h.
Purposefully omitted from buffer.h because files other than this
@@
-431,7
+433,11
@@
bufpos_to_bytind_func (struct buffer *buf, Bufpos x)
bufmax = buf->text->mule_bufmax;
bytmin = buf->text->mule_bytmin;
bytmax = buf->text->mule_bytmax;
bufmax = buf->text->mule_bufmax;
bytmin = buf->text->mule_bytmin;
bytmax = buf->text->mule_bytmax;
+#ifdef UTF2000
+ size = buf->text->mule_size;
+#else
size = (1 << buf->text->mule_shifter) + !!buf->text->mule_three_p;
size = (1 << buf->text->mule_shifter) + !!buf->text->mule_three_p;
+#endif
/* The basic idea here is that we shift the "known region" up or down
until it overlaps the specified position. We do this by moving
/* The basic idea here is that we shift the "known region" up or down
until it overlaps the specified position. We do this by moving
@@
-626,11
+632,16
@@
bufpos_to_bytind_func (struct buffer *buf, Bufpos x)
discovered isn't too large, because we use a fixed-length
table to divide by 3. */
discovered isn't too large, because we use a fixed-length
table to divide by 3. */
+#ifdef UTF2000
+ buf->text->mule_size = size;
+#endif
if (size == 3)
{
int gap = bytmax - bytmin;
if (size == 3)
{
int gap = bytmax - bytmin;
+#ifndef UTF2000
buf->text->mule_three_p = 1;
buf->text->mule_shifter = 1;
buf->text->mule_three_p = 1;
buf->text->mule_shifter = 1;
+#endif
if (gap > MAX_BYTIND_GAP_SIZE_3)
{
if (gap > MAX_BYTIND_GAP_SIZE_3)
{
@@
-648,11
+659,13
@@
bufpos_to_bytind_func (struct buffer *buf, Bufpos x)
}
else
{
}
else
{
+#ifndef UTF2000
buf->text->mule_three_p = 0;
if (size == 4)
buf->text->mule_shifter = 2;
else
buf->text->mule_shifter = size - 1;
buf->text->mule_three_p = 0;
if (size == 4)
buf->text->mule_shifter = 2;
else
buf->text->mule_shifter = size - 1;
+#endif
}
buf->text->mule_bufmin = bufmin;
}
buf->text->mule_bufmin = bufmin;
@@
-708,7
+721,11
@@
bytind_to_bufpos_func (struct buffer *buf, Bytind x)
bufmax = buf->text->mule_bufmax;
bytmin = buf->text->mule_bytmin;
bytmax = buf->text->mule_bytmax;
bufmax = buf->text->mule_bufmax;
bytmin = buf->text->mule_bytmin;
bytmax = buf->text->mule_bytmax;
+#ifdef UTF2000
+ size = buf->text->mule_size;
+#else
size = (1 << buf->text->mule_shifter) + !!buf->text->mule_three_p;
size = (1 << buf->text->mule_shifter) + !!buf->text->mule_three_p;
+#endif
/* The basic idea here is that we shift the "known region" up or down
until it overlaps the specified position. We do this by moving
/* The basic idea here is that we shift the "known region" up or down
until it overlaps the specified position. We do this by moving
@@
-903,11
+920,16
@@
bytind_to_bufpos_func (struct buffer *buf, Bytind x)
discovered isn't too large, because we use a fixed-length
table to divide by 3. */
discovered isn't too large, because we use a fixed-length
table to divide by 3. */
+#ifdef UTF2000
+ buf->text->mule_size = size;
+ #endif
if (size == 3)
{
int gap = bytmax - bytmin;
if (size == 3)
{
int gap = bytmax - bytmin;
+#ifndef UTF2000
buf->text->mule_three_p = 1;
buf->text->mule_shifter = 1;
buf->text->mule_three_p = 1;
buf->text->mule_shifter = 1;
+#endif
if (gap > MAX_BYTIND_GAP_SIZE_3)
{
if (gap > MAX_BYTIND_GAP_SIZE_3)
{
@@
-925,11
+947,13
@@
bytind_to_bufpos_func (struct buffer *buf, Bytind x)
}
else
{
}
else
{
+#ifndef UTF2000
buf->text->mule_three_p = 0;
if (size == 4)
buf->text->mule_shifter = 2;
else
buf->text->mule_shifter = size - 1;
buf->text->mule_three_p = 0;
if (size == 4)
buf->text->mule_shifter = 2;
else
buf->text->mule_shifter = size - 1;
+#endif
}
buf->text->mule_bufmin = bufmin;
}
buf->text->mule_bufmin = bufmin;
@@
-965,7
+989,11
@@
buffer_mule_signal_inserted_region (struct buffer *buf, Bufpos start,
Bytecount bytelength,
Charcount charlength)
{
Bytecount bytelength,
Charcount charlength)
{
+#ifdef UTF2000
+ int size = buf->text->mule_size;
+#else
int size = (1 << buf->text->mule_shifter) + !!buf->text->mule_three_p;
int size = (1 << buf->text->mule_shifter) + !!buf->text->mule_three_p;
+#endif
int i;
/* Adjust the cache of known positions. */
int i;
/* Adjust the cache of known positions. */
@@
-3079,7
+3107,7
@@
barf_if_buffer_read_only (struct buffer *buf, Bufpos from, Bufpos to)
}
void
}
void
-find_charsets_in_bufbyte_string (unsigned char *charsets, CONST Bufbyte *str,
+find_charsets_in_bufbyte_string (Charset_ID *charsets, CONST Bufbyte *str,
Bytecount len)
{
#ifndef MULE
Bytecount len)
{
#ifndef MULE
@@
-3087,18
+3115,19
@@
find_charsets_in_bufbyte_string (unsigned char *charsets, CONST Bufbyte *str,
charsets[0] = 1;
#else
CONST Bufbyte *strend = str + len;
charsets[0] = 1;
#else
CONST Bufbyte *strend = str + len;
- memset (charsets, 0, NUM_LEADING_BYTES);
+ memset (charsets, 0, NUM_LEADING_BYTES * sizeof(Charset_ID));
while (str < strend)
{
while (str < strend)
{
- charsets[CHAR_LEADING_BYTE (charptr_emchar (str)) - 128] = 1;
+ charsets[CHAR_LEADING_BYTE (charptr_emchar (str))
+ - MIN_LEADING_BYTE] = 1;
INC_CHARPTR (str);
}
#endif
}
void
INC_CHARPTR (str);
}
#endif
}
void
-find_charsets_in_emchar_string (unsigned char *charsets, CONST Emchar *str,
+find_charsets_in_emchar_string (Charset_ID *charsets, CONST Emchar *str,
Charcount len)
{
#ifndef MULE
Charcount len)
{
#ifndef MULE
@@
-3107,10
+3136,10
@@
find_charsets_in_emchar_string (unsigned char *charsets, CONST Emchar *str,
#else
int i;
#else
int i;
- memset (charsets, 0, NUM_LEADING_BYTES);
+ memset (charsets, 0, NUM_LEADING_BYTES * sizeof(Charset_ID));
for (i = 0; i < len; i++)
{
for (i = 0; i < len; i++)
{
- charsets[CHAR_LEADING_BYTE (str[i]) - 128] = 1;
+ charsets[CHAR_LEADING_BYTE (str[i]) - MIN_LEADING_BYTE] = 1;
}
#endif
}
}
#endif
}
@@
-3125,7
+3154,7
@@
bufbyte_string_displayed_columns (CONST Bufbyte *str, Bytecount len)
{
#ifdef MULE
Emchar ch = charptr_emchar (str);
{
#ifdef MULE
Emchar ch = charptr_emchar (str);
- cols += XCHARSET_COLUMNS (CHAR_CHARSET (ch));
+ cols += CHAR_COLUMNS (ch);
#else
cols++;
#endif
#else
cols++;
#endif
@@
-3143,7
+3172,7
@@
emchar_string_displayed_columns (CONST Emchar *str, Charcount len)
int i;
for (i = 0; i < len; i++)
int i;
for (i = 0; i < len; i++)
- cols += XCHARSET_COLUMNS (CHAR_CHARSET (str[i]));
+ cols += CHAR_COLUMNS (str[i]);
return cols;
#else /* not MULE */
return cols;
#else /* not MULE */
@@
-3236,13
+3265,17
@@
convert_emchar_string_into_malloced_string (Emchar *arr, int nels,
void
vars_of_insdel (void)
{
void
vars_of_insdel (void)
{
+#ifndef UTF2000
int i;
int i;
+#endif
inside_change_hook = 0;
in_first_change = 0;
inside_change_hook = 0;
in_first_change = 0;
+#ifndef UTF2000
for (i = 0; i <= MAX_BYTIND_GAP_SIZE_3; i++)
three_to_one_table[i] = i / 3;
for (i = 0; i <= MAX_BYTIND_GAP_SIZE_3; i++)
three_to_one_table[i] = i / 3;
+#endif
}
void
}
void
@@
-3266,8
+3299,12
@@
init_buffer_text (struct buffer *b)
b->text->mule_bufmin = b->text->mule_bufmax = 1;
b->text->mule_bytmin = b->text->mule_bytmax = 1;
b->text->mule_bufmin = b->text->mule_bufmax = 1;
b->text->mule_bytmin = b->text->mule_bytmax = 1;
+#ifdef UTF2000
+ b->text->mule_size = 0;
+#else
b->text->mule_shifter = 0;
b->text->mule_three_p = 0;
b->text->mule_shifter = 0;
b->text->mule_three_p = 0;
+#endif
for (i = 0; i < 16; i++)
{
for (i = 0; i < 16; i++)
{