int search_flags = SEARCH_NOOF;
int i;
int save;
+ int bslsh = FALSE;
int search_delim;
// Parsing range may already set the last search pattern.
else
pat = ccline.cmdbuff + skiplen;
+ // do not search for the search end delimiter,
+ // unless it is part of the pattern
+ if (patlen > 2 && firstc == pat[patlen - 1])
+ {
+ patlen--;
+ if (pat[patlen - 1] == '\\')
+ {
+ pat[patlen - 1] = firstc;
+ bslsh = TRUE;
+ }
+ }
+
cursor_off();
out_flush();
if (c == Ctrl_G)
pat, patlen, count, search_flags, RE_SEARCH, NULL);
--emsg_off;
pat[patlen] = save;
+ if (bslsh)
+ pat[patlen - 1] = '\\';
if (i)
{
is_state->search_start = is_state->match_start;
bwipe!
endfunc
+func Test_incsearch_delimiter_ctrlg()
+ CheckOption incsearch
+ CheckScreendump
+ CheckRunVimInTerminal
+ call assert_equal(0, &scrolloff)
+ call writefile([
+ \ 'set incsearch hls',
+ \ 'call setline(1, ["1 vim inc", "2 vim /", "3 vim /", "4 vim ?", "5 vim ?"])',
+ \ 'normal gg',
+ \ 'redraw',
+ \ ], 'Xscript_incsearch_delim', 'D')
+ let buf = RunVimInTerminal('-S Xscript_incsearch_delim', {'rows': 6})
+
+ call term_sendkeys(buf, '/')
+ sleep 100m
+ call term_sendkeys(buf, 'v')
+ sleep 100m
+ call term_sendkeys(buf, 'i')
+ sleep 100m
+ call term_sendkeys(buf, 'm')
+ sleep 100m
+ call term_sendkeys(buf, ' ')
+ sleep 100m
+ call term_sendkeys(buf, '/')
+ sleep 100m
+ call term_sendkeys(buf, "\<C-G>")
+ call VerifyScreenDump(buf, 'Test_incsearch_delim_01', {})
+ call term_sendkeys(buf, "\<Esc>")
+
+ call term_sendkeys(buf, ":5\<cr>")
+ call term_sendkeys(buf, '?')
+ sleep 100m
+ call term_sendkeys(buf, 'v')
+ sleep 100m
+ call term_sendkeys(buf, 'i')
+ sleep 100m
+ call term_sendkeys(buf, 'm')
+ sleep 100m
+ call term_sendkeys(buf, ' ')
+ sleep 100m
+ call term_sendkeys(buf, '?')
+ sleep 100m
+ call term_sendkeys(buf, "\<C-T>")
+ call VerifyScreenDump(buf, 'Test_incsearch_delim_02', {})
+ call term_sendkeys(buf, "\<Esc>")
+
+ call term_sendkeys(buf, '/')
+ sleep 100m
+ call term_sendkeys(buf, 'v')
+ sleep 100m
+ call term_sendkeys(buf, 'i')
+ sleep 100m
+ call term_sendkeys(buf, 'm')
+ sleep 100m
+ call term_sendkeys(buf, ' ')
+ sleep 100m
+ call term_sendkeys(buf, '\/')
+ sleep 100m
+ call term_sendkeys(buf, "\<C-G>")
+ call VerifyScreenDump(buf, 'Test_incsearch_delim_03', {})
+ call term_sendkeys(buf, "\<Esc>")
+
+ call term_sendkeys(buf, ":5\<cr>")
+ call term_sendkeys(buf, '?')
+ sleep 100m
+ call term_sendkeys(buf, 'v')
+ sleep 100m
+ call term_sendkeys(buf, 'i')
+ sleep 100m
+ call term_sendkeys(buf, 'm')
+ sleep 100m
+ call term_sendkeys(buf, ' ')
+ sleep 100m
+ call term_sendkeys(buf, '\?')
+ sleep 100m
+ call term_sendkeys(buf, "\<C-T>")
+ call VerifyScreenDump(buf, 'Test_incsearch_delim_04', {})
+ call term_sendkeys(buf, "\<Esc>")
+
+ call StopVimInTerminal(buf)
+endfunc
" vim: shiftwidth=2 sts=2 expandtab