register int pos, last;
int some_multiletter_word;
int some_lowercase;
+ int some_uppercase;
int some_lowercase_initial;
register int c, prevc;
int inslen;
some_multiletter_word = 0;
some_lowercase = 0;
some_lowercase_initial = 0;
+ some_uppercase = 0;
for (pos = search_regs.start[0]; pos < last; pos++)
{
}
else if (!NOCASEP (c))
{
+ some_uppercase = 1;
if (SYNTAX (prevc) != Sword)
;
else
if (! some_lowercase && some_multiletter_word)
case_action = all_caps;
/* Capitalize each word, if the old text has all capitalized words. */
- /* We used to insist on some_multiletter_word here,
- but that screwed query replacing x with y, acting on X.
- Even what we have now is more strict than what 19.22 had. */
- else if (!some_lowercase_initial)
+ 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;
}