diff options
-rw-r--r-- | src/nvim/edit.c | 4 | ||||
-rw-r--r-- | src/nvim/fold.c | 4 | ||||
-rw-r--r-- | src/nvim/globals.h | 4 | ||||
-rw-r--r-- | test/functional/viml/completion_spec.lua | 6 |
4 files changed, 14 insertions, 4 deletions
diff --git a/src/nvim/edit.c b/src/nvim/edit.c index beae55b8a8..3729cd5f2d 100644 --- a/src/nvim/edit.c +++ b/src/nvim/edit.c @@ -165,10 +165,6 @@ 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; diff --git a/src/nvim/fold.c b/src/nvim/fold.c index 6c135ef47b..70ab4ced75 100644 --- a/src/nvim/fold.c +++ b/src/nvim/fold.c @@ -762,6 +762,10 @@ void clearFolding(win_T *win) */ void foldUpdate(win_T *wp, linenr_T top, linenr_T bot) { + if (compl_busy) { + return; + } + fold_T *fp; if (wp->w_buffer->terminal) { return; diff --git a/src/nvim/globals.h b/src/nvim/globals.h index 69e65c3208..618245ea23 100644 --- a/src/nvim/globals.h +++ b/src/nvim/globals.h @@ -214,6 +214,10 @@ EXTERN int compl_length INIT(= 0); * stop looking for matches. */ EXTERN int compl_interrupted INIT(= FALSE); +// Set when doing something for completion that may call edit() recursively, +// which is not allowed. Also used to disable folding during completion +EXTERN int compl_busy INIT(= false); + /* List of flags for method of completion. */ EXTERN int compl_cont_status INIT(= 0); # define CONT_ADDING 1 /* "normal" or "adding" expansion */ diff --git a/test/functional/viml/completion_spec.lua b/test/functional/viml/completion_spec.lua index 4bb9707cda..45dbbdb7c7 100644 --- a/test/functional/viml/completion_spec.lua +++ b/test/functional/viml/completion_spec.lua @@ -141,4 +141,10 @@ describe('completion', function() June]]) end) end) + + it('disables folding during completion', function () + execute("set foldmethod=indent") + feed('i<Tab>foo<CR><Tab>bar<Esc>ggA<C-x><C-l>') + eq(-1, eval('foldclosed(1)')) + end) end) |