(X_IO_BUG): Defined.
[bpt/emacs.git] / src / search.c
index 7819f1a..b0e2b1f 100644 (file)
@@ -1174,6 +1174,7 @@ Leaves point at end of replacement text.")
   register int pos, last;
   int some_multiletter_word;
   int some_lowercase;
+  int some_uppercase;
   int some_lowercase_initial;
   register int c, prevc;
   int inslen;
@@ -1205,6 +1206,7 @@ Leaves point at end of replacement text.")
       some_multiletter_word = 0;
       some_lowercase = 0;
       some_lowercase_initial = 0;
+      some_uppercase = 0;
 
       for (pos = search_regs.start[0]; pos < last; pos++)
        {
@@ -1221,6 +1223,7 @@ Leaves point at end of replacement text.")
            }
          else if (!NOCASEP (c))
            {
+             some_uppercase = 1;
              if (SYNTAX (prevc) != Sword)
                ;
              else
@@ -1237,6 +1240,10 @@ Leaves point at end of replacement text.")
       /* Capitalize each word, if the old text has all capitalized words.  */
       else if (!some_lowercase_initial && some_multiletter_word)
        case_action = cap_initial;
+      else if (!some_lowercase_initial && some_uppercase)
+       /* Should x -> yz, operating on X, give Yz or YZ?
+          We'll assume the latter.  */
+       case_action = all_caps;
       else
        case_action = nochange;
     }