vim-patch:8.0.1304: CTRL-G/CTRL-T don't work with incsearch and empty pattern

Problem:    CTRL-G/CTRL-T don't work with incsearch and empty pattern.
Solution:   Use the last search pattern. (Christian Brabandt, closes vim/vim#2292)

d048009717
This commit is contained in:
Ömer Sinan Ağacan 2018-01-21 15:09:17 +03:00
parent cd59577d57
commit 9bc1410ee1
4 changed files with 41 additions and 2 deletions

View File

@ -1019,7 +1019,16 @@ static void command_line_next_incsearch(CommandLineState *s, bool next_match)
ui_flush(); ui_flush();
pos_T t; pos_T t;
char_u *pat;
int search_flags = SEARCH_NOOF; int search_flags = SEARCH_NOOF;
if (s->firstc == ccline.cmdbuff[0]) {
pat = last_search_pattern();
} else {
pat = ccline.cmdbuff;
}
save_last_search_pattern(); save_last_search_pattern();
if (next_match) { if (next_match) {
@ -1039,7 +1048,7 @@ static void command_line_next_incsearch(CommandLineState *s, bool next_match)
emsg_off++; emsg_off++;
s->i = searchit(curwin, curbuf, &t, s->i = searchit(curwin, curbuf, &t,
next_match ? FORWARD : BACKWARD, next_match ? FORWARD : BACKWARD,
ccline.cmdbuff, s->count, search_flags, pat, s->count, search_flags,
RE_SEARCH, 0, NULL); RE_SEARCH, 0, NULL);
emsg_off--; emsg_off--;
ui_busy_stop(); ui_busy_stop();

View File

@ -335,6 +335,12 @@ restore_last_search_pattern(void)
SET_NO_HLSEARCH(saved_no_hlsearch); SET_NO_HLSEARCH(saved_no_hlsearch);
} }
char_u *
last_search_pattern(void)
{
return spats[RE_SEARCH].pat;
}
/* /*
* Return TRUE when case should be ignored for search pattern "pat". * Return TRUE when case should be ignored for search pattern "pat".
* Uses the 'ignorecase' and 'smartcase' options. * Uses the 'ignorecase' and 'smartcase' options.

View File

@ -193,7 +193,7 @@ static const int included_patches[] = {
// 1307, // 1307,
// 1306, // 1306,
// 1305, // 1305,
// 1304, 1304,
// 1303, // 1303,
// 1302, // 1302,
// 1301, // 1301,

View File

@ -243,6 +243,30 @@ describe('search highlighting', function()
{1:~ }| {1:~ }|
/^ | /^ |
]]) ]])
-- 8.0.1304, test that C-g and C-t works with incsearch and empty pattern
feed('<esc>/fi<CR>')
feed('//')
screen:expect([[
the {3:fi}rst line |
in a little {2:fi}le |
|
{1:~ }|
{1:~ }|
{1:~ }|
//^ |
]])
feed('<C-g>')
screen:expect([[
the {2:fi}rst line |
in a little {3:fi}le |
|
{1:~ }|
{1:~ }|
{1:~ }|
//^ |
]])
end) end)
it('works with incsearch and offset', function() it('works with incsearch and offset', function()