mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
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 #2292)
This commit is contained in:
parent
9c6ce0e622
commit
d048009717
@ -220,7 +220,7 @@ getcmdline(
|
|||||||
pos_T match_end;
|
pos_T match_end;
|
||||||
# ifdef FEAT_DIFF
|
# ifdef FEAT_DIFF
|
||||||
int old_topfill;
|
int old_topfill;
|
||||||
int init_topfill = curwin->w_topfill;
|
int init_topfill = curwin->w_topfill;
|
||||||
# endif
|
# endif
|
||||||
linenr_T old_botline;
|
linenr_T old_botline;
|
||||||
linenr_T init_botline = curwin->w_botline;
|
linenr_T init_botline = curwin->w_botline;
|
||||||
@ -1715,11 +1715,17 @@ getcmdline(
|
|||||||
if (p_is && !cmd_silent && (firstc == '/' || firstc == '?'))
|
if (p_is && !cmd_silent && (firstc == '/' || firstc == '?'))
|
||||||
{
|
{
|
||||||
pos_T t;
|
pos_T t;
|
||||||
|
char_u *pat;
|
||||||
int search_flags = SEARCH_NOOF;
|
int search_flags = SEARCH_NOOF;
|
||||||
|
|
||||||
if (ccline.cmdlen == 0)
|
if (ccline.cmdlen == 0)
|
||||||
goto cmdline_not_changed;
|
goto cmdline_not_changed;
|
||||||
|
|
||||||
|
if (firstc == ccline.cmdbuff[0])
|
||||||
|
pat = last_search_pattern();
|
||||||
|
else
|
||||||
|
pat = ccline.cmdbuff;
|
||||||
|
|
||||||
save_last_search_pattern();
|
save_last_search_pattern();
|
||||||
cursor_off();
|
cursor_off();
|
||||||
out_flush();
|
out_flush();
|
||||||
@ -1739,7 +1745,7 @@ getcmdline(
|
|||||||
++emsg_off;
|
++emsg_off;
|
||||||
i = searchit(curwin, curbuf, &t,
|
i = searchit(curwin, curbuf, &t,
|
||||||
c == Ctrl_G ? FORWARD : BACKWARD,
|
c == Ctrl_G ? FORWARD : BACKWARD,
|
||||||
ccline.cmdbuff, count, search_flags,
|
pat, count, search_flags,
|
||||||
RE_SEARCH, 0, NULL, NULL);
|
RE_SEARCH, 0, NULL, NULL);
|
||||||
--emsg_off;
|
--emsg_off;
|
||||||
if (i)
|
if (i)
|
||||||
|
@ -7,6 +7,7 @@ void save_search_patterns(void);
|
|||||||
void restore_search_patterns(void);
|
void restore_search_patterns(void);
|
||||||
void save_last_search_pattern(void);
|
void save_last_search_pattern(void);
|
||||||
void restore_last_search_pattern(void);
|
void restore_last_search_pattern(void);
|
||||||
|
char_u *last_search_pattern(void);
|
||||||
void free_search_patterns(void);
|
void free_search_patterns(void);
|
||||||
int ignorecase(char_u *pat);
|
int ignorecase(char_u *pat);
|
||||||
int ignorecase_opt(char_u *pat, int ic_in, int scs);
|
int ignorecase_opt(char_u *pat, int ic_in, int scs);
|
||||||
|
@ -393,6 +393,12 @@ restore_last_search_pattern(void)
|
|||||||
last_idx = saved_last_idx;
|
last_idx = saved_last_idx;
|
||||||
SET_NO_HLSEARCH(saved_no_hlsearch);
|
SET_NO_HLSEARCH(saved_no_hlsearch);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char_u *
|
||||||
|
last_search_pattern(void)
|
||||||
|
{
|
||||||
|
return spats[RE_SEARCH].pat;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -461,6 +461,15 @@ func Test_search_cmdline7()
|
|||||||
" moves to next match of previous search pattern, just like /<cr>
|
" moves to next match of previous search pattern, just like /<cr>
|
||||||
call feedkeys("/\<c-t>\<cr>", 'tx')
|
call feedkeys("/\<c-t>\<cr>", 'tx')
|
||||||
call assert_equal([0,1,7,0], getpos('.'))
|
call assert_equal([0,1,7,0], getpos('.'))
|
||||||
|
|
||||||
|
" using an offset uses the last search pattern
|
||||||
|
call cursor(1, 1)
|
||||||
|
call setline(1, ['1 bbvimb', ' 2 bbvimb'])
|
||||||
|
let @/ = 'b'
|
||||||
|
call feedkeys("//e\<c-g>\<cr>", 'tx')
|
||||||
|
call assert_equal('1 bbvimb', getline('.'))
|
||||||
|
call assert_equal(4, col('.'))
|
||||||
|
|
||||||
set noincsearch
|
set noincsearch
|
||||||
call test_override("char_avail", 0)
|
call test_override("char_avail", 0)
|
||||||
bw!
|
bw!
|
||||||
|
@ -766,6 +766,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1304,
|
||||||
/**/
|
/**/
|
||||||
1303,
|
1303,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user