mirror of
https://github.com/vim/vim.git
synced 2025-09-24 03:44:06 -04:00
patch 8.0.1482: using feedkeys() does not work to test completion
Problem: Using feedkeys() does not work to test Insert mode completion. (Lifepillar) Solution: Do not check for typed keys when executing :normal or feedkeys(). Fix thesaurus completion not working when 'complete' is empty.
This commit is contained in:
19
src/edit.c
19
src/edit.c
@@ -1454,7 +1454,8 @@ doESCkey:
|
|||||||
/* if 'complete' is empty then plain ^P is no longer special,
|
/* if 'complete' is empty then plain ^P is no longer special,
|
||||||
* but it is under other ^X modes */
|
* but it is under other ^X modes */
|
||||||
if (*curbuf->b_p_cpt == NUL
|
if (*curbuf->b_p_cpt == NUL
|
||||||
&& ctrl_x_mode != 0
|
&& (ctrl_x_mode == CTRL_X_NORMAL
|
||||||
|
|| ctrl_x_mode == CTRL_X_WHOLE_LINE)
|
||||||
&& !(compl_cont_status & CONT_LOCAL))
|
&& !(compl_cont_status & CONT_LOCAL))
|
||||||
goto normalchar;
|
goto normalchar;
|
||||||
|
|
||||||
@@ -1568,8 +1569,8 @@ normalchar:
|
|||||||
/* If typed something may trigger CursorHoldI again. */
|
/* If typed something may trigger CursorHoldI again. */
|
||||||
if (c != K_CURSORHOLD
|
if (c != K_CURSORHOLD
|
||||||
# ifdef FEAT_COMPL_FUNC
|
# ifdef FEAT_COMPL_FUNC
|
||||||
/* but not in CTRL-X mode, a script can't restore the state */
|
/* but not in CTRL-X mode, a script can't restore the state */
|
||||||
&& ctrl_x_mode == 0
|
&& ctrl_x_mode == CTRL_X_NORMAL
|
||||||
# endif
|
# endif
|
||||||
)
|
)
|
||||||
did_cursorhold = FALSE;
|
did_cursorhold = FALSE;
|
||||||
@@ -1582,7 +1583,7 @@ normalchar:
|
|||||||
#ifdef FEAT_CINDENT
|
#ifdef FEAT_CINDENT
|
||||||
if (can_cindent && cindent_on()
|
if (can_cindent && cindent_on()
|
||||||
# ifdef FEAT_INS_EXPAND
|
# ifdef FEAT_INS_EXPAND
|
||||||
&& ctrl_x_mode == 0
|
&& ctrl_x_mode == CTRL_X_NORMAL
|
||||||
# endif
|
# endif
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
@@ -5020,12 +5021,12 @@ ins_compl_next(
|
|||||||
ins_compl_check_keys(int frequency, int in_compl_func)
|
ins_compl_check_keys(int frequency, int in_compl_func)
|
||||||
{
|
{
|
||||||
static int count = 0;
|
static int count = 0;
|
||||||
|
int c;
|
||||||
|
|
||||||
int c;
|
/* Don't check when reading keys from a script, :normal or feedkeys().
|
||||||
|
* That would break the test scripts. But do check for keys when called
|
||||||
/* Don't check when reading keys from a script. That would break the test
|
* from complete_check(). */
|
||||||
* scripts */
|
if (!in_compl_func && (using_script() || ex_normal_busy))
|
||||||
if (using_script())
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* Only do this at regular intervals */
|
/* Only do this at regular intervals */
|
||||||
|
@@ -631,11 +631,11 @@ func! Test_edit_CTRL_L()
|
|||||||
call feedkeys("cct\<c-x>\<c-l>\<c-n>\<esc>", 'tnix')
|
call feedkeys("cct\<c-x>\<c-l>\<c-n>\<esc>", 'tnix')
|
||||||
call assert_equal(['one', 'two', 'three', 't', '', '', ''], getline(1, '$'))
|
call assert_equal(['one', 'two', 'three', 't', '', '', ''], getline(1, '$'))
|
||||||
call feedkeys("cct\<c-x>\<c-l>\<c-n>\<c-n>\<esc>", 'tnix')
|
call feedkeys("cct\<c-x>\<c-l>\<c-n>\<c-n>\<esc>", 'tnix')
|
||||||
call assert_equal(['one', 'two', 'three', 't', '', '', ''], getline(1, '$'))
|
|
||||||
call feedkeys("cct\<c-x>\<c-l>\<c-n>\<c-n>\<c-n>\<esc>", 'tnix')
|
|
||||||
call assert_equal(['one', 'two', 'three', 'two', '', '', ''], getline(1, '$'))
|
call assert_equal(['one', 'two', 'three', 'two', '', '', ''], getline(1, '$'))
|
||||||
call feedkeys("cct\<c-x>\<c-l>\<c-n>\<c-n>\<c-n>\<c-n>\<esc>", 'tnix')
|
call feedkeys("cct\<c-x>\<c-l>\<c-n>\<c-n>\<c-n>\<esc>", 'tnix')
|
||||||
call assert_equal(['one', 'two', 'three', 'three', '', '', ''], getline(1, '$'))
|
call assert_equal(['one', 'two', 'three', 'three', '', '', ''], getline(1, '$'))
|
||||||
|
call feedkeys("cct\<c-x>\<c-l>\<c-n>\<c-n>\<c-n>\<c-n>\<esc>", 'tnix')
|
||||||
|
call assert_equal(['one', 'two', 'three', 't', '', '', ''], getline(1, '$'))
|
||||||
call feedkeys("cct\<c-x>\<c-l>\<c-p>\<esc>", 'tnix')
|
call feedkeys("cct\<c-x>\<c-l>\<c-p>\<esc>", 'tnix')
|
||||||
call assert_equal(['one', 'two', 'three', 'two', '', '', ''], getline(1, '$'))
|
call assert_equal(['one', 'two', 'three', 'two', '', '', ''], getline(1, '$'))
|
||||||
call feedkeys("cct\<c-x>\<c-l>\<c-p>\<c-p>\<esc>", 'tnix')
|
call feedkeys("cct\<c-x>\<c-l>\<c-p>\<c-p>\<esc>", 'tnix')
|
||||||
@@ -1357,7 +1357,6 @@ func Test_edit_complete_very_long_name()
|
|||||||
let save_columns = &columns
|
let save_columns = &columns
|
||||||
" Need at least about 1100 columns to reproduce the problem.
|
" Need at least about 1100 columns to reproduce the problem.
|
||||||
set columns=2000
|
set columns=2000
|
||||||
call assert_equal(2000, &columns)
|
|
||||||
set noswapfile
|
set noswapfile
|
||||||
|
|
||||||
let longfilename = longdirname . '/' . repeat('a', 255)
|
let longfilename = longdirname . '/' . repeat('a', 255)
|
||||||
|
@@ -116,3 +116,14 @@ func Test_omni_dash()
|
|||||||
delfunc Omni
|
delfunc Omni
|
||||||
set omnifunc=
|
set omnifunc=
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
" Check that when using feedkeys() typeahead does not interrupt searching for
|
||||||
|
" completions.
|
||||||
|
func Test_compl_feedkeys()
|
||||||
|
new
|
||||||
|
set completeopt=menuone,noselect
|
||||||
|
call feedkeys("ajump ju\<C-X>\<C-N>\<C-P>\<ESC>", "tx")
|
||||||
|
call assert_equal("jump jump", getline(1))
|
||||||
|
bwipe!
|
||||||
|
set completeopt&
|
||||||
|
endfunc
|
||||||
|
@@ -693,7 +693,7 @@ func Test_popup_and_preview_autocommand()
|
|||||||
norm! gt
|
norm! gt
|
||||||
call assert_equal(0, &previewwindow)
|
call assert_equal(0, &previewwindow)
|
||||||
norm! gT
|
norm! gT
|
||||||
call assert_equal(12, tabpagenr('$'))
|
call assert_equal(10, tabpagenr('$'))
|
||||||
tabonly
|
tabonly
|
||||||
pclose
|
pclose
|
||||||
augroup MyBufAdd
|
augroup MyBufAdd
|
||||||
|
@@ -771,6 +771,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 */
|
||||||
|
/**/
|
||||||
|
1482,
|
||||||
/**/
|
/**/
|
||||||
1481,
|
1481,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user