[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/src/editfns.c [emacs-unicode-2]
From: |
Kenichi Handa |
Subject: |
[Emacs-diffs] Changes to emacs/src/editfns.c [emacs-unicode-2] |
Date: |
Mon, 06 Dec 2004 06:43:55 -0500 |
Index: emacs/src/editfns.c
diff -c emacs/src/editfns.c:1.359.2.15 emacs/src/editfns.c:1.359.2.16
*** emacs/src/editfns.c:1.359.2.15 Fri Nov 12 02:52:56 2004
--- emacs/src/editfns.c Mon Dec 6 11:34:00 2004
***************
*** 2884,2899 ****
{
if (! EQ (XCHAR_TABLE (table)->purpose, Qtranslation_table))
error ("Not a translation table");
tt = NULL;
}
else
{
CHECK_STRING (table);
! if (multibyte != (SCHARS (table) < SBYTES (table)))
! table = (multibyte
! ? string_make_multibyte (table)
! : string_make_unibyte (table));
string_multibyte = SCHARS (table) < SBYTES (table);
size = SBYTES (table);
tt = SDATA (table);
--- 2884,2898 ----
{
if (! EQ (XCHAR_TABLE (table)->purpose, Qtranslation_table))
error ("Not a translation table");
+ size = MAX_CHAR;
tt = NULL;
}
else
{
CHECK_STRING (table);
! if (! multibyte && (SCHARS (table) < SBYTES (table)))
! table = string_make_unibyte (table);
string_multibyte = SCHARS (table) < SBYTES (table);
size = SBYTES (table);
tt = SDATA (table);
***************
*** 2914,2958 ****
Lisp_Object val;
if (multibyte)
! nc = oc = STRING_CHAR_AND_LENGTH (p, 0, len);
else
! nc = oc = *p, len = 1;
! if (tt)
{
! if (oc < size)
{
if (string_multibyte)
{
str = tt + string_char_to_byte (table, oc);
! nc = STRING_CHAR_AND_LENGTH (str, 0, str_len);
}
else
{
! str = tt + oc;
! nc = tt[oc], str_len = 1;
}
}
! }
! else
! {
! val = CHAR_TABLE_REF (table, oc);
! if (CHARACTERP (val))
! {
! nc = XFASTINT (val);
! str_len = CHAR_STRING (nc, buf);
! str = buf;
! }
! else if (VECTORP (val) || (CONSP (val)))
{
! /* VAL is [TO_CHAR ...] or (([FROM-CHAR ...] . TO) ...)
! where TO is TO-CHAR or [TO-CHAR ...]. */
! nc = -1;
}
- }
! if (nc != oc)
! {
! if (nc >= 0)
{
/* Simple one char to one char translation. */
if (len != str_len)
--- 2913,2968 ----
Lisp_Object val;
if (multibyte)
! oc = STRING_CHAR_AND_LENGTH (p, MAX_MULTIBYTE_LENGTH, len);
else
! oc = *p, len = 1;
! if (oc < size)
{
! if (tt)
{
if (string_multibyte)
{
str = tt + string_char_to_byte (table, oc);
! nc = STRING_CHAR_AND_LENGTH (str, MAX_MULTIBYTE_LENGTH,
! str_len);
}
else
{
! nc = tt[oc];
! if (! ASCII_BYTE_P (nc) && multibyte)
! {
! str_len = BYTE8_STRING (nc, buf);
! str = buf;
! }
! else
! {
! str_len = 1;
! str = tt + oc;
! }
}
}
! else
{
! int c;
!
! nc = oc;
! val = CHAR_TABLE_REF (table, oc);
! if (CHARACTERP (val)
! && (c = XINT (val), CHAR_VALID_P (c, 0)))
! {
! nc = c;
! str_len = CHAR_STRING (nc, buf);
! str = buf;
! }
! else if (VECTORP (val) || (CONSP (val)))
! {
! /* VAL is [TO_CHAR ...] or (([FROM-CHAR ...] . TO) ...)
! where TO is TO-CHAR or [TO-CHAR ...]. */
! nc = -1;
! }
}
! if (nc != oc && nc >= 0)
{
/* Simple one char to one char translation. */
if (len != str_len)
***************
*** 2975,2981 ****
}
++cnt;
}
! else
{
Lisp_Object string;
--- 2985,2991 ----
}
++cnt;
}
! else if (nc < 0)
{
Lisp_Object string;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] Changes to emacs/src/editfns.c [emacs-unicode-2],
Kenichi Handa <=