summaryrefslogtreecommitdiff
path: root/src/diff.c
diff options
context:
space:
mode:
authorBram Moolenaar <bram@zimbu.org>2010-02-24 14:34:19 +0100
committerBram Moolenaar <bram@zimbu.org>2010-02-24 14:34:19 +0100
commit594d15d615d6c779754cd50db6a047aad2428905 (patch)
treec4bfe8c5efb1c26b4e38d38d23b3c49585f5c4fc /src/diff.c
parentd7b9d841f8309e2e6f2460b8c8ef33e00ad85034 (diff)
downloadvim-7.2.370.tar.gz
updated for version 7.2.370v7.2.370v7-2-370
Problem: A redraw may cause folds to be closed. Solution: Revert part of the previous patch. Add a test. (Lech Lorens)
Diffstat (limited to 'src/diff.c')
-rw-r--r--src/diff.c35
1 files changed, 20 insertions, 15 deletions
diff --git a/src/diff.c b/src/diff.c
index f5ea0c69..bf625459 100644
--- 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)