aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAufar Gilbran <aufargilbran@gmail.com>2020-08-12 03:09:45 +0800
committerAufar Gilbran <aufargilbran@gmail.com>2020-09-11 10:31:41 +0800
commit841ec4316c13179fc15ec6d74237377636f7090f (patch)
treed07397597a450ae475029a91027eb5c9053c3e9b /src
parent8ae47ddf63bdc6e880eac2f5752da137507a34c0 (diff)
downloadrneovim-841ec4316c13179fc15ec6d74237377636f7090f.tar.gz
rneovim-841ec4316c13179fc15ec6d74237377636f7090f.tar.bz2
rneovim-841ec4316c13179fc15ec6d74237377636f7090f.zip
vim-patch:8.1.0280: 'incsearch' highlighting does not work for ":g!/"
Problem: 'incsearch' highlighting does not work for ":g!/". Solution: Skip the exclamation mark. (Hirohito Higashi) https://github.com/vim/vim/commit/def7b1dc6104a6ce6d7c3e3a615231178601b124
Diffstat (limited to 'src')
-rw-r--r--src/nvim/ex_getln.c7
-rw-r--r--src/nvim/testdir/test_search.vim8
2 files changed, 15 insertions, 0 deletions
diff --git a/src/nvim/ex_getln.c b/src/nvim/ex_getln.c
index 6a60592f14..9769d5f58b 100644
--- a/src/nvim/ex_getln.c
+++ b/src/nvim/ex_getln.c
@@ -299,6 +299,13 @@ static bool do_incsearch_highlighting(int firstc, incsearch_state_T *s,
&& (STRNCMP(cmd, "substitute", p - cmd) == 0
|| STRNCMP(cmd, "global", p - cmd) == 0
|| STRNCMP(cmd, "vglobal", p - cmd) == 0)) {
+ // Check for "global!/".
+ if (*cmd == 'g' && *p == '!') {
+ p++;
+ if (*skipwhite(p) == NUL) {
+ return false;
+ }
+ }
p = skipwhite(p);
delim = *p++;
end = skip_regexp(p, delim, p_magic, NULL);
diff --git a/src/nvim/testdir/test_search.vim b/src/nvim/testdir/test_search.vim
index 0b403f8d2f..01e6f2d61c 100644
--- a/src/nvim/testdir/test_search.vim
+++ b/src/nvim/testdir/test_search.vim
@@ -408,6 +408,14 @@ func Test_search_cmdline3g()
undo
call feedkeys(":global/the\<c-l>/d\<cr>", 'tx')
call assert_equal(' 3 the theother', getline(2))
+ undo
+ call feedkeys(":g!/the\<c-l>/d\<cr>", 'tx')
+ call assert_equal(1, line('$'))
+ call assert_equal(' 2 the~e', getline(1))
+ undo
+ call feedkeys(":global!/the\<c-l>/d\<cr>", 'tx')
+ call assert_equal(1, line('$'))
+ call assert_equal(' 2 the~e', getline(1))
call Incsearch_cleanup()
endfunc