From ea03032018c39b9976b664071ebcd1a75463348c Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Mon, 14 Sep 2020 01:17:47 -0400 Subject: 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 --- src/nvim/ex_getln.c | 21 +++++++++++++-------- src/nvim/testdir/test_search.vim | 13 +++++++++++++ 2 files changed, 26 insertions(+), 8 deletions(-) (limited to 'src') 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, "\") call VerifyScreenDump(buf, 'Test_incsearch_substitute_13', {}) + call term_sendkeys(buf, ":%bwipe!\") + call term_sendkeys(buf, ":only!\") + + " get :'<,'>s command in history + call term_sendkeys(buf, ":set cmdheight=2\") + call term_sendkeys(buf, "aasdfasdf\") + call term_sendkeys(buf, "V:s/a/b/g\") + " Using '<,'> does not give E20 + call term_sendkeys(buf, ":new\") + call term_sendkeys(buf, "aasdfasdf\") + call term_sendkeys(buf, ":\\") + call VerifyScreenDump(buf, 'Test_incsearch_substitute_14', {}) + call term_sendkeys(buf, "") call StopVimInTerminal(buf) call delete('Xis_subst_script') -- cgit