aboutsummaryrefslogtreecommitdiffstats
path: root/src/search.c
diff options
context:
space:
mode:
authorKarl Heuer1994-05-25 03:59:06 +0000
committerKarl Heuer1994-05-25 03:59:06 +0000
commit73dc87711090d6b60b9c003b1be91c6b8b8efc3f (patch)
treed473f51669fe95dd8227b2a89f39eb5c3f37b3e0 /src/search.c
parent026e833080f14f2db656344c86b488aeb6e1c9c1 (diff)
downloademacs-73dc87711090d6b60b9c003b1be91c6b8b8efc3f.tar.gz
emacs-73dc87711090d6b60b9c003b1be91c6b8b8efc3f.zip
(Freplace_match): Improve capitalization heuristics.
Diffstat (limited to 'src/search.c')
-rw-r--r--src/search.c12
1 files 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.")
1174 register int pos, last; 1174 register int pos, last;
1175 int some_multiletter_word; 1175 int some_multiletter_word;
1176 int some_lowercase; 1176 int some_lowercase;
1177 int some_uppercase;
1177 int some_lowercase_initial; 1178 int some_lowercase_initial;
1178 register int c, prevc; 1179 register int c, prevc;
1179 int inslen; 1180 int inslen;
@@ -1205,6 +1206,7 @@ Leaves point at end of replacement text.")
1205 some_multiletter_word = 0; 1206 some_multiletter_word = 0;
1206 some_lowercase = 0; 1207 some_lowercase = 0;
1207 some_lowercase_initial = 0; 1208 some_lowercase_initial = 0;
1209 some_uppercase = 0;
1208 1210
1209 for (pos = search_regs.start[0]; pos < last; pos++) 1211 for (pos = search_regs.start[0]; pos < last; pos++)
1210 { 1212 {
@@ -1221,6 +1223,7 @@ Leaves point at end of replacement text.")
1221 } 1223 }
1222 else if (!NOCASEP (c)) 1224 else if (!NOCASEP (c))
1223 { 1225 {
1226 some_uppercase = 1;
1224 if (SYNTAX (prevc) != Sword) 1227 if (SYNTAX (prevc) != Sword)
1225 ; 1228 ;
1226 else 1229 else
@@ -1235,11 +1238,12 @@ Leaves point at end of replacement text.")
1235 if (! some_lowercase && some_multiletter_word) 1238 if (! some_lowercase && some_multiletter_word)
1236 case_action = all_caps; 1239 case_action = all_caps;
1237 /* Capitalize each word, if the old text has all capitalized words. */ 1240 /* Capitalize each word, if the old text has all capitalized words. */
1238 /* We used to insist on some_multiletter_word here, 1241 else if (!some_lowercase_initial && some_multiletter_word)
1239 but that screwed query replacing x with y, acting on X.
1240 Even what we have now is more strict than what 19.22 had. */
1241 else if (!some_lowercase_initial)
1242 case_action = cap_initial; 1242 case_action = cap_initial;
1243 else if (!some_lowercase_initial && some_uppercase)
1244 /* Should x -> yz, operating on X, give Yz or YZ?
1245 We'll assume the latter. */
1246 case_action = all_caps;
1243 else 1247 else
1244 case_action = nochange; 1248 case_action = nochange;
1245 } 1249 }