continue;
}
+ if (p_ac)
+ ins_compl_set_autocomplete(TRUE);
+
// A non-white character that fits in with the current
// completion: Add to "compl_leader".
if (ins_compl_accept_char(c))
continue;
}
+ if (p_ac)
+ ins_compl_set_autocomplete(FALSE);
+
// Pressing CTRL-Y selects the current match. When
// ins_compl_enter_selects() is set the Enter key does the
// same.
&& curwin->w_cursor.col > 0)
{
c = char_before_cursor();
- if (ins_compl_setup_autocompl(c))
+ if (vim_isprintc(c))
{
update_screen(UPD_VALID); // Show char deletion immediately
out_flush();
+ ins_compl_set_autocomplete(TRUE);
goto docomplete; // Trigger autocompletion
}
}
foldOpenCursor();
#endif
// Trigger autocompletion
- if (p_ac && !char_avail() && ins_compl_setup_autocompl(c))
+ if (p_ac && !char_avail() && vim_isprintc(c))
{
update_screen(UPD_VALID); // Show character immediately
out_flush();
+ ins_compl_set_autocomplete(TRUE);
goto docomplete;
}
if (!compl_started)
{
if (ins_compl_start() == FAIL)
+ {
+ compl_autocomplete = FALSE;
return FAIL;
+ }
}
else if (insert_match && stop_arrow() == FAIL)
return FAIL;
compl_was_interrupted = compl_interrupted;
compl_interrupted = FALSE;
+ compl_autocomplete = FALSE;
return OK;
}
/*
- * Returns TRUE if the given character 'c' can be used to trigger
- * autocompletion.
+ * Enable/disable autocompletion
*/
- int
-ins_compl_setup_autocompl(int c)
+ void
+ins_compl_set_autocomplete(int value)
{
#ifdef ELAPSED_FUNC
- if (vim_isprintc(c))
- {
- compl_autocomplete = TRUE;
- return TRUE;
- }
+ compl_autocomplete = value;
#endif
- return FALSE;
}
/*
void ins_compl_insert(int move_cursor);
void ins_compl_check_keys(int frequency, int in_compl_func);
int ins_complete(int c, int enable_pum);
-int ins_compl_setup_autocompl(int c);
+void ins_compl_set_autocomplete(int val);
void free_insexpand_stuff(void);
/* vim: set ft=c : */
--- /dev/null
+|f+0&#ffffff0|o@1| @71
+|f|o@1|b|a|r| @68
+|f|o@1|b|a|r|b|a|z| @65
+|f> @73
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|-+2#0000000&@1| |I|N|S|E|R|T| |-@1| +0&&@62
--- /dev/null
+|f+0&#ffffff0|o@1| @71
+|f|o@1|b|a|r| @68
+|f|o@1|b|a|r|b|a|z| @65
+|f|o@1|b|a|r|b|a|z> @65
+|f+0#0000001#e0e0e08|o@1|b|a|r|b|a|z| @5| +0#4040ff13#ffffff0@59
+|f+0#0000001#ffd7ff255|o@1|b|a|r| @8| +0#4040ff13#ffffff0@59
+|f+0#0000001#ffd7ff255|o@1| @11| +0#4040ff13#ffffff0@59
+|~| @73
+|~| @73
+|-+2#0000000&@1| |I|N|S|E|R|T| |-@1| +0&&@62
--- /dev/null
+|f+0&#ffffff0|o@1| @71
+|f|o@1|b|a|r| @68
+|f|o@1|b|a|r|b|a|z| @65
+|f|o@1|b|a|r|b|a|z> @65
+|f+0#0000001#ffd7ff255|o@1|b|a|r|b|a|z| @5| +0#4040ff13#ffffff0@59
+|f+0#0000001#e0e0e08|o@1|b|a|r| @8| +0#4040ff13#ffffff0@59
+|f+0#0000001#ffd7ff255|o@1| @11| +0#4040ff13#ffffff0@59
+|~| @73
+|~| @73
+|-+2#0000000&@1| |I|N|S|E|R|T| |-@1| +0&&@62
call assert_equal(['abc', 'ab'], b:matches->mapnew('v:val.word'))
call assert_equal(0, b:selected)
call assert_equal(1, g:CallCount)
- call assert_equal('abc', getline(4))
+ call assert_equal('ab', getline(4))
set completeopt&
" Test 8: {func} completes after space, but not '.'
call term_sendkeys(buf, "Sf\<C-N>")
call VerifyScreenDump(buf, 'Test_autocompletedelay_7', {})
+ " After the menu is open, ^N/^P and Up/Down should not delay
+ call term_sendkeys(buf, "\<Esc>:set completeopt=menu noruler\<CR>")
+ call term_sendkeys(buf, "\<Esc>Sf")
+ sleep 500ms
+ call term_sendkeys(buf, "\<C-N>")
+ call VerifyScreenDump(buf, 'Test_autocompletedelay_8', {})
+ call term_sendkeys(buf, "\<Down>")
+ call VerifyScreenDump(buf, 'Test_autocompletedelay_9', {})
+
+ " When menu is not open Up/Down moves cursor to different line
+ call term_sendkeys(buf, "\<Esc>Sf")
+ call term_sendkeys(buf, "\<Down>")
+ call VerifyScreenDump(buf, 'Test_autocompletedelay_10', {})
+
call term_sendkeys(buf, "\<esc>")
call StopVimInTerminal(buf)
endfunc
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 1657,
/**/
1656,
/**/