aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Edmund Lazo <jan.lazo@mail.utoronto.ca>2020-09-14 01:17:47 -0400
committerJan Edmund Lazo <jan.lazo@mail.utoronto.ca>2020-09-14 18:19:45 -0400
commitea03032018c39b9976b664071ebcd1a75463348c (patch)
treefd7cad48f33cb77030ea5399e24cf372318f6fb6
parentf34eeba2d85b4382d7504e1f3e12a7afb0788c1d (diff)
downloadrneovim-ea03032018c39b9976b664071ebcd1a75463348c.tar.gz
rneovim-ea03032018c39b9976b664071ebcd1a75463348c.tar.bz2
rneovim-ea03032018c39b9976b664071ebcd1a75463348c.zip
vim-patch:8.1.2338: using Visual mark sith :s gives E20 if not set
Problem: Using Visual mark sith :s gives E20 if not set. Solution: Ignore errors when handling 'incsearch'. (closes vim/vim#3837) https://github.com/vim/vim/commit/c672525b487992306f69ceab093291ba3b8e4246 N/A patches for version.c: vim-patch:8.2.1526: line in testdir Makefile got commented out Problem: Line in testdir Makefile got commented out. (Christian Brabandt) Solution: Revert. https://github.com/vim/vim/commit/228e62975e7aef9d6224a5a7c43625c1c1494fc2 vim-patch:8.2.1675: MinGW: testdir makefile deletes non-existing file Problem: MinGW: testdir makefile deletes non-existing file. Solution: Use another way to delete the output file if it already exists. (Michael Soyka) https://github.com/vim/vim/commit/05c1acd5e1564ea4dbc7d4be26908af6909f43f6
-rw-r--r--src/nvim/ex_getln.c21
-rw-r--r--src/nvim/testdir/test_search.vim13
2 files changed, 26 insertions, 8 deletions
diff --git a/src/nvim/ex_getln.c b/src/nvim/ex_getln.c
index 8f2d536e63..d57239e570 100644
--- a/src/nvim/ex_getln.c
+++ b/src/nvim/ex_getln.c
@@ -288,6 +288,7 @@ static bool do_incsearch_highlighting(int firstc, incsearch_state_T *s,
exarg_T ea;
pos_T save_cursor;
bool use_last_pat;
+ bool retval = false;
*skiplen = 0;
*patlen = ccline.cmdlen;
@@ -307,6 +308,7 @@ static bool do_incsearch_highlighting(int firstc, incsearch_state_T *s,
return false;
}
+ emsg_off++;
memset(&ea, 0, sizeof(ea));
ea.line1 = 1;
ea.line2 = 1;
@@ -318,13 +320,13 @@ static bool do_incsearch_highlighting(int firstc, incsearch_state_T *s,
cmd = skip_range(ea.cmd, NULL);
if (vim_strchr((char_u *)"sgvl", *cmd) == NULL) {
- return false;
+ goto theend;
}
// Skip over "substitute" to find the pattern separator.
for (p = cmd; ASCII_ISALPHA(*p); p++) {}
if (*skipwhite(p) == NUL) {
- return false;
+ goto theend;
}
if (STRNCMP(cmd, "substitute", p - cmd) == 0
@@ -342,7 +344,7 @@ static bool do_incsearch_highlighting(int firstc, incsearch_state_T *s,
p++;
}
if (*p == NUL) {
- return false;
+ goto theend;
}
} else if (STRNCMP(cmd, "vimgrep", MAX(p - cmd, 3)) == 0
|| STRNCMP(cmd, "vimgrepadd", MAX(p - cmd, 8)) == 0
@@ -353,14 +355,14 @@ static bool do_incsearch_highlighting(int firstc, incsearch_state_T *s,
if (*p == '!') {
p++;
if (*skipwhite(p) == NUL) {
- return false;
+ goto theend;
}
}
if (*cmd != 'g') {
delim_optional = true;
}
} else {
- return false;
+ goto theend;
}
p = skipwhite(p);
@@ -369,7 +371,7 @@ static bool do_incsearch_highlighting(int firstc, incsearch_state_T *s,
use_last_pat = end == p && *end == delim;
if (end == p && !use_last_pat) {
- return false;
+ goto theend;
}
// Don't do 'hlsearch' highlighting if the pattern matches everything.
@@ -381,7 +383,7 @@ static bool do_incsearch_highlighting(int firstc, incsearch_state_T *s,
empty = empty_pattern(p);
*end = c;
if (empty) {
- return false;
+ goto theend;
}
}
@@ -409,7 +411,10 @@ static bool do_incsearch_highlighting(int firstc, incsearch_state_T *s,
}
curwin->w_cursor = save_cursor;
- return true;
+ retval = true;
+theend:
+ emsg_off--;
+ return retval;
}
// May do 'incsearch' highlighting if desired.
diff --git a/src/nvim/testdir/test_search.vim b/src/nvim/testdir/test_search.vim
index e3a0fce5a6..aaa60e39c9 100644
--- a/src/nvim/testdir/test_search.vim
+++ b/src/nvim/testdir/test_search.vim
@@ -708,6 +708,19 @@ func Test_incsearch_substitute_dump()
call VerifyScreenDump(buf, 'Test_incsearch_substitute_12', {})
call term_sendkeys(buf, "\<Esc>")
call VerifyScreenDump(buf, 'Test_incsearch_substitute_13', {})
+ call term_sendkeys(buf, ":%bwipe!\<CR>")
+ call term_sendkeys(buf, ":only!\<CR>")
+
+ " get :'<,'>s command in history
+ call term_sendkeys(buf, ":set cmdheight=2\<CR>")
+ call term_sendkeys(buf, "aasdfasdf\<Esc>")
+ call term_sendkeys(buf, "V:s/a/b/g\<CR>")
+ " Using '<,'> does not give E20
+ call term_sendkeys(buf, ":new\<CR>")
+ call term_sendkeys(buf, "aasdfasdf\<Esc>")
+ call term_sendkeys(buf, ":\<Up>\<Up>")
+ call VerifyScreenDump(buf, 'Test_incsearch_substitute_14', {})
+ call term_sendkeys(buf, "<Esc>")
call StopVimInTerminal(buf)
call delete('Xis_subst_script')