emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/src/casefiddle.c


From: Richard M . Stallman
Subject: [Emacs-diffs] Changes to emacs/src/casefiddle.c
Date: Tue, 02 Nov 2004 04:32:09 -0500

Index: emacs/src/casefiddle.c
diff -c emacs/src/casefiddle.c:1.48 emacs/src/casefiddle.c:1.49
*** emacs/src/casefiddle.c:1.48 Tue Oct 26 22:38:50 2004
--- emacs/src/casefiddle.c      Tue Nov  2 09:12:51 2004
***************
*** 235,240 ****
--- 235,244 ----
        else if (!UPPERCASEP (c)
               && (!inword || flag != CASE_CAPITALIZE_UP))
        c = UPCASE1 (c);
+       if (multibyte && c >= 0x80)
+       /* A multibyte result character can't be handled in this
+          simple loop.  */
+       break;
        FETCH_BYTE (i) = c;
        if (c != c2)
        changed = 1;
***************
*** 272,293 ****
                       tolen = CHAR_STRING (c2, str),
                       fromlen == tolen)
                {
                  for (j = 0; j < tolen; ++j)
                    FETCH_BYTE (i + j) = str[j];
                }
              else
!               {
!                 error ("Can't casify letters that change length");
! #if 0 /* This is approximately what we'd like to be able to do here */
!                 if (tolen < fromlen)
!                   del_range_1 (i + tolen, i + fromlen, 0, 0);
!                 else if (tolen > fromlen)
!                   {
!                     TEMP_SET_PT (i + fromlen);
!                     insert_1 (str + fromlen, tolen - fromlen, 1, 0, 0);
!                   }
! #endif
!               }
            }
          if ((int) flag >= (int) CASE_CAPITALIZE)
            inword = SYNTAX (c2) == Sword;
--- 276,292 ----
                       tolen = CHAR_STRING (c2, str),
                       fromlen == tolen)
                {
+                 /* Length is unchanged.  */
                  for (j = 0; j < tolen; ++j)
                    FETCH_BYTE (i + j) = str[j];
                }
              else
!               /* Replace one character with the other,
!                  keeping text properties the same.  */
!               replace_range_2 (start + 1, i + tolen,
!                                start + 2, i + tolen + fromlen,
!                                str, 1, tolen,
!                                0);
            }
          if ((int) flag >= (int) CASE_CAPITALIZE)
            inword = SYNTAX (c2) == Sword;




reply via email to

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