From 73dc87711090d6b60b9c003b1be91c6b8b8efc3f Mon Sep 17 00:00:00 2001 From: Karl Heuer Date: Wed, 25 May 1994 03:59:06 +0000 Subject: [PATCH] (Freplace_match): Improve capitalization heuristics. --- src/search.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/search.c b/src/search.c index 2ac8d14e0b0..b0e2b1f919d 100644 --- a/src/search.c +++ b/src/search.c @@ -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 @@ -1235,11 +1238,12 @@ Leaves point at end of replacement text.") 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; } -- 2.39.5