vim-patch:7.4.1753

Problem:    "noinsert" in 'completeopt' is sometimes ignored.
Solution:   Set the variables when the 'completeopt' was set. (Ozaki Kiichi)

c020042083
This commit is contained in:
Shougo Matsushita 2016-04-21 06:00:55 +09:00
parent cef624ee9e
commit e57238a644
3 changed files with 21 additions and 12 deletions

View File

@ -2319,6 +2319,22 @@ static int ins_compl_make_cyclic(void)
return count;
}
// Set variables that store noselect and noinsert behavior from the
// 'completeopt' value.
void completeopt_was_set(void)
{
compl_no_insert = false;
compl_no_select = false;
if (strstr((char *)p_cot, "noselect") != NULL) {
compl_no_select = true;
}
if (strstr((char *)p_cot, "noinsert") != NULL) {
compl_no_insert = true;
}
}
/*
* Start completion for the complete() function.
* "startcol" is where the matched text starts (1 is first column).
@ -3097,17 +3113,6 @@ static bool ins_compl_prep(int c)
}
if (strstr((char *)p_cot, "noselect") != NULL) {
compl_no_insert = FALSE;
compl_no_select = TRUE;
} else if (strstr((char *)p_cot, "noinsert") != NULL) {
compl_no_insert = TRUE;
compl_no_select = FALSE;
} else {
compl_no_insert = FALSE;
compl_no_select = FALSE;
}
if (ctrl_x_mode == CTRL_X_NOT_DEFINED_YET) {
/*
* We have just typed CTRL-X and aren't quite sure which CTRL-X mode

View File

@ -2957,8 +2957,11 @@ did_set_string_option (
}
/* 'completeopt' */
else if (varp == &p_cot) {
if (check_opt_strings(p_cot, p_cot_values, TRUE) != OK)
if (check_opt_strings(p_cot, p_cot_values, true) != OK) {
errmsg = e_invarg;
} else {
completeopt_was_set();
}
}
/* 'pastetoggle': translate key codes like in a mapping */
else if (varp == &p_pt) {

View File

@ -70,6 +70,7 @@ static char *features[] = {
// clang-format off
static int included_patches[] = {
1755,
1753,
1654,
1652,
1643,