emacs-diffs
[Top][All Lists]
Advanced

[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;
  




reply via email to

[Prev in Thread] Current Thread [Next in Thread]