diff options
author | Aufar Gilbran <aufargilbran@gmail.com> | 2020-08-19 00:06:17 +0800 |
---|---|---|
committer | Aufar Gilbran <aufargilbran@gmail.com> | 2020-09-11 10:33:20 +0800 |
commit | b24dabf266cb3c271f706450abb3d55d82981d38 (patch) | |
tree | 60548148d7805ff31bb1a8ec136d2b334587b595 /src/nvim/ex_getln.c | |
parent | ba59ee9a15d1febec7eebf0c91e949c17d8bbc0c (diff) | |
download | rneovim-b24dabf266cb3c271f706450abb3d55d82981d38.tar.gz rneovim-b24dabf266cb3c271f706450abb3d55d82981d38.tar.bz2 rneovim-b24dabf266cb3c271f706450abb3d55d82981d38.zip |
vim-patch:8.1.0282: 'incsearch' does not work with command modifiers
Problem: 'incsearch' does not work with command modifiers.
Solution: Skip command modifiers.
https://github.com/vim/vim/commit/33c4dbb74bdf41aadd193a704f597d4df20f0e47
Diffstat (limited to 'src/nvim/ex_getln.c')
-rw-r--r-- | src/nvim/ex_getln.c | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/src/nvim/ex_getln.c b/src/nvim/ex_getln.c index 9769d5f58b..2e10fbff91 100644 --- a/src/nvim/ex_getln.c +++ b/src/nvim/ex_getln.c @@ -287,11 +287,24 @@ static bool do_incsearch_highlighting(int firstc, incsearch_state_T *s, return true; } if (firstc == ':') { - char_u *cmd = skip_range(ccline.cmdbuff, NULL); + char_u *cmd; + cmdmod_T save_cmdmod = cmdmod; char_u *p; int delim; char_u *end; + char_u *dummy; + exarg_T ea; + memset(&ea, 0, sizeof(ea)); + ea.line1 = 1; + ea.line2 = 1; + ea.cmd = ccline.cmdbuff; + ea.addr_type = ADDR_LINES; + + parse_command_modifiers(&ea, &dummy, TRUE); + cmdmod = save_cmdmod; + + cmd = skip_range(ea.cmd, NULL); if (*cmd == 's' || *cmd == 'g' || *cmd == 'v') { // Skip over "substitute" to find the pattern separator. for (p = cmd; ASCII_ISALPHA(*p); p++) {} @@ -310,8 +323,6 @@ static bool do_incsearch_highlighting(int firstc, incsearch_state_T *s, delim = *p++; end = skip_regexp(p, delim, p_magic, NULL); if (end > p || *end == delim) { - char_u *dummy; - exarg_T ea; pos_T save_cursor = curwin->w_cursor; // found a non-empty pattern @@ -319,11 +330,6 @@ static bool do_incsearch_highlighting(int firstc, incsearch_state_T *s, *patlen = (int)(end - p); // parse the address range - memset(&ea, 0, sizeof(ea)); - ea.line1 = 1; - ea.line2 = 1; - ea.cmd = ccline.cmdbuff; - ea.addr_type = ADDR_LINES; curwin->w_cursor = s->search_start; parse_cmd_address(&ea, &dummy); if (ea.addr_count > 0) { |