int some_multiletter_word;
int some_lowercase;
int some_uppercase;
- int some_lowercase_initial;
+ int some_nonuppercase_initial;
register int c, prevc;
int inslen;
is more than one letter long. */
some_multiletter_word = 0;
some_lowercase = 0;
- some_lowercase_initial = 0;
+ some_nonuppercase_initial = 0;
some_uppercase = 0;
for (pos = search_regs.start[0]; pos < last; pos++)
some_lowercase = 1;
if (SYNTAX (prevc) != Sword)
- some_lowercase_initial = 1;
+ some_nonuppercase_initial = 1;
else
some_multiletter_word = 1;
}
else
some_multiletter_word = 1;
}
+ else
+ {
+ /* If the initial is a caseless word constituent,
+ treat that like a lowercase initial. */
+ if (SYNTAX (prevc) != Sword)
+ some_nonuppercase_initial = 1;
+ }
prevc = c;
}
if (! some_lowercase && some_multiletter_word)
case_action = all_caps;
/* Capitalize each word, if the old text has all capitalized words. */
- else if (!some_lowercase_initial && some_multiletter_word)
+ else if (!some_nonuppercase_initial && some_multiletter_word)
case_action = cap_initial;
- else if (!some_lowercase_initial && some_uppercase)
+ else if (!some_nonuppercase_initial && some_uppercase)
/* Should x -> yz, operating on X, give Yz or YZ?
We'll assume the latter. */
case_action = all_caps;