diff options
author | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2020-09-14 01:17:47 -0400 |
---|---|---|
committer | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2020-09-14 18:19:45 -0400 |
commit | ea03032018c39b9976b664071ebcd1a75463348c (patch) | |
tree | fd7cad48f33cb77030ea5399e24cf372318f6fb6 /src | |
parent | f34eeba2d85b4382d7504e1f3e12a7afb0788c1d (diff) | |
download | rneovim-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
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/ex_getln.c | 21 | ||||
-rw-r--r-- | src/nvim/testdir/test_search.vim | 13 |
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') |