changeset 8891:d7ba3f9b9ba6 v7.4.1732

commit https://github.com/vim/vim/commit/429fcfbf9a9275367fe9441a50a3dcd773497d84 Author: Bram Moolenaar <Bram@vim.org> Date: Thu Apr 14 16:22:04 2016 +0200 patch 7.4.1732 Problem: Folds may close when using autocomplete. (Anmol Sethi) Solution: Increment/decrement disable_fold. (Christian Brabandt, closes https://github.com/vim/vim/issues/643)
author Christian Brabandt <cb@256bit.org>
date Thu, 14 Apr 2016 16:30:05 +0200
parents fc941c8ff127
children dbbbb98186f1
files src/edit.c src/fold.c src/globals.h src/version.c
diffstat 4 files changed, 11 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/edit.c
+++ b/src/edit.c
@@ -1424,8 +1424,10 @@ doESCkey:
 
 docomplete:
 	    compl_busy = TRUE;
+	    disable_fold_update++;  /* don't redraw folds here */
 	    if (ins_complete(c, TRUE) == FAIL)
 		compl_cont_status = 0;
+	    disable_fold_update--;
 	    compl_busy = FALSE;
 	    break;
 #endif /* FEAT_INS_EXPAND */
--- a/src/fold.c
+++ b/src/fold.c
@@ -811,6 +811,9 @@ foldUpdate(win_T *wp, linenr_T top, line
 {
     fold_T	*fp;
 
+    if (disable_fold_update > 0)
+	return;
+
     /* Mark all folds from top to bot as maybe-small. */
     (void)foldFind(&wp->w_folds, top, &fp);
     while (fp < (fold_T *)wp->w_folds.ga_data + wp->w_folds.ga_len
--- a/src/globals.h
+++ b/src/globals.h
@@ -1176,6 +1176,10 @@ EXTERN int	fill_fold INIT(= '-');
 EXTERN int	fill_diff INIT(= '-');
 #endif
 
+#ifdef FEAT_FOLDING
+EXTERN int	disable_fold_update INIT(= 0);
+#endif
+
 /* Whether 'keymodel' contains "stopsel" and "startsel". */
 EXTERN int	km_stopsel INIT(= FALSE);
 EXTERN int	km_startsel INIT(= FALSE);
--- a/src/version.c
+++ b/src/version.c
@@ -749,6 +749,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1732,
+/**/
     1731,
 /**/
     1730,