diff src/diff.c @ 2086:c11845a465ae v7.2.370

updated for version 7.2.370 Problem: A redraw may cause folds to be closed. Solution: Revert part of the previous patch. Add a test. (Lech Lorens)
author Bram Moolenaar <bram@zimbu.org>
date Wed, 24 Feb 2010 14:34:19 +0100
parents fe26299d6f70
children 1bac28a53fae
line wrap: on
line diff
--- a/src/diff.c
+++ b/src/diff.c
@@ -1117,26 +1117,31 @@ diff_win_options(wp, addbuf)
     win_T	*wp;
     int		addbuf;		/* Add buffer to diff. */
 {
+# ifdef FEAT_FOLDING
+    win_T *old_curwin = curwin;
+
+    /* close the manually opened folds */
+    curwin = wp;
+    newFoldLevel();
+    curwin = old_curwin;
+# endif
+
     wp->w_p_diff = TRUE;
     wp->w_p_scb = TRUE;
     wp->w_p_wrap = FALSE;
 # ifdef FEAT_FOLDING
-    {
-	win_T	    *old_curwin = curwin;
-
-	curwin = wp;
-	curbuf = curwin->w_buffer;
-	set_string_option_direct((char_u *)"fdm", -1, (char_u *)"diff",
+    curwin = wp;
+    curbuf = curwin->w_buffer;
+    set_string_option_direct((char_u *)"fdm", -1, (char_u *)"diff",
 						       OPT_LOCAL|OPT_FREE, 0);
-	curwin = old_curwin;
-	curbuf = curwin->w_buffer;
-	wp->w_p_fdc = diff_foldcolumn;
-	wp->w_p_fen = TRUE;
-	wp->w_p_fdl = 0;
-	foldUpdateAll(wp);
-	/* make sure topline is not halfway a fold */
-	changed_window_setting_win(wp);
-    }
+    curwin = old_curwin;
+    curbuf = curwin->w_buffer;
+    wp->w_p_fdc = diff_foldcolumn;
+    wp->w_p_fen = TRUE;
+    wp->w_p_fdl = 0;
+    foldUpdateAll(wp);
+    /* make sure topline is not halfway a fold */
+    changed_window_setting_win(wp);
 # endif
 #ifdef FEAT_SCROLLBIND
     if (vim_strchr(p_sbo, 'h') == NULL)