/* String search routines for GNU Emacs.
- Copyright (C) 1985, 1986, 1987, 1993 Free Software Foundation, Inc.
+ Copyright (C) 1985, 1986, 1987, 1993, 1994 Free Software Foundation, Inc.
This file is part of GNU Emacs.
register int pos, last;
int some_multiletter_word;
int some_lowercase;
- int some_uppercase_initial;
+ int some_uppercase;
+ int some_lowercase_initial;
register int c, prevc;
int inslen;
is more than one letter long. */
some_multiletter_word = 0;
some_lowercase = 0;
- some_uppercase_initial = 0;
+ some_lowercase_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;
else
some_multiletter_word = 1;
}
else if (!NOCASEP (c))
{
+ some_uppercase = 1;
if (SYNTAX (prevc) != Sword)
- some_uppercase_initial = 1;
+ ;
else
some_multiletter_word = 1;
}
and has at least one multiletter word. */
if (! some_lowercase && some_multiletter_word)
case_action = all_caps;
- /* Capitalize each word, if the old text has a capitalized word. */
- else if (some_uppercase_initial)
+ /* 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;
}