aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Dalziel <tom_dl@hotmail.com>2024-06-03 14:24:28 +0200
committerTom Dalziel <33435574+tomdl89@users.noreply.github.com>2024-06-03 16:54:50 +0200
commit3ba76c1c1f6e8f0389d7bebbd220eefaca796da4 (patch)
tree3f97421e93161bf668c68e7acf2f5e6ceef4371b
parent9fada7828a1afadbec1f84675ce3c8e9729e1cdc (diff)
Ex-substitute: use last search's case-sensitivity
-rw-r--r--evil-search.el3
-rw-r--r--evil-tests.el8
2 files changed, 11 insertions, 0 deletions
diff --git a/evil-search.el b/evil-search.el
index 9f283a2..e47a84e 100644
--- a/evil-search.el
+++ b/evil-search.el
@@ -1200,6 +1200,9 @@ is used. It is meant for :substitute commands with arguments."
isearch-string
(concat isearch-string "\\C")))
flags (remq ?r flags)))
+ (when (and using-prev-pattern
+ (not (evil-ex-pattern-ignore-case evil-ex-search-pattern)))
+ (setq pattern (concat pattern "\\C")))
;; generate pattern
(when pattern
;; Disable vim-style regexp conversion if using a previous pattern, because
diff --git a/evil-tests.el b/evil-tests.el
index 39f3c30..724ea9b 100644
--- a/evil-tests.el
+++ b/evil-tests.el
@@ -8206,6 +8206,14 @@ golf h[o]>tel")))
"[x]xx AAA bar AAA bar AAA bar\nxxx foo bar foo bar foo bar"
("g&")
"xxx AAA bar AAA bar AAA bar\n[x]xx AAA bar AAA bar AAA bar"))
+ (ert-info ("Substitute with last search, maintaining case sensitivty")
+ (evil-select-search-module 'evil-search-module 'evil-search)
+ (evil-test-buffer
+ "[a]lpha\nbravo\nbravo\ncharlie\nBravo\ndelta"
+ ("/\\Cbravo" [return])
+ "alpha\n[b]ravo\nbravo\ncharlie\nBravo\ndelta"
+ (":%s//zulu" [return])
+ "alpha\nzulu\n[z]ulu\ncharlie\nBravo\ndelta"))
(ert-info ("Repeat magic multiple times")
(let ((evil-magic 'very-magic)
(evil-ex-search-vim-style-regexp t))