summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/edit.c9
-rw-r--r--src/version.c2
2 files changed, 10 insertions, 1 deletions
diff --git a/src/edit.c b/src/edit.c
index c1935c21c..347571f47 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -114,6 +114,10 @@ static int compl_restarting = FALSE; /* don't insert match */
* FALSE the word to be completed must be located. */
static int compl_started = FALSE;
+/* Set when doing something for completion that may call edit() recursively,
+ * which is not allowed. */
+static int compl_busy = FALSE;
+
static int compl_matches = 0;
static char_u *compl_pattern = NULL;
static int compl_direction = FORWARD;
@@ -346,7 +350,7 @@ edit(cmdchar, startln, count)
#ifdef FEAT_INS_EXPAND
/* Don't allow recursive insert mode when busy with completion. */
- if (compl_started || pum_visible())
+ if (compl_started || compl_busy || pum_visible())
{
EMSG(_(e_secure));
return FALSE;
@@ -1340,8 +1344,10 @@ doESCkey:
goto normalchar;
docomplete:
+ compl_busy = TRUE;
if (ins_complete(c) == FAIL)
compl_cont_status = 0;
+ compl_busy = FALSE;
break;
#endif /* FEAT_INS_EXPAND */
@@ -3172,6 +3178,7 @@ ins_compl_free()
vim_free(match);
} while (compl_curr_match != NULL && compl_curr_match != compl_first_match);
compl_first_match = compl_curr_match = NULL;
+ compl_shown_match = NULL;
}
static void
diff --git a/src/version.c b/src/version.c
index fb0c3435b..f3e9b2b7b 100644
--- a/src/version.c
+++ b/src/version.c
@@ -677,6 +677,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 224,
+/**/
223,
/**/
222,