From e57238a644cf24f3130caf7d557a081bbd89df4a Mon Sep 17 00:00:00 2001 From: Shougo Matsushita Date: Thu, 21 Apr 2016 06:00:55 +0900 Subject: [PATCH] vim-patch:7.4.1753 Problem: "noinsert" in 'completeopt' is sometimes ignored. Solution: Set the variables when the 'completeopt' was set. (Ozaki Kiichi) https://github.com/vim/vim/commit/c020042083b9c0a4e932b562c3bef97c76328e18 --- src/nvim/edit.c | 27 ++++++++++++++++----------- src/nvim/option.c | 5 ++++- src/nvim/version.c | 1 + 3 files changed, 21 insertions(+), 12 deletions(-) diff --git a/src/nvim/edit.c b/src/nvim/edit.c index 3a4b475bc8..bca8b9bff0 100644 --- a/src/nvim/edit.c +++ b/src/nvim/edit.c @@ -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 diff --git a/src/nvim/option.c b/src/nvim/option.c index f9d1cdbaec..816900d2aa 100644 --- a/src/nvim/option.c +++ b/src/nvim/option.c @@ -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) { diff --git a/src/nvim/version.c b/src/nvim/version.c index 5ead7cecbe..d6d22ef3f4 100644 --- a/src/nvim/version.c +++ b/src/nvim/version.c @@ -70,6 +70,7 @@ static char *features[] = { // clang-format off static int included_patches[] = { 1755, + 1753, 1654, 1652, 1643,