diff options
| author | Bram Moolenaar <bram@zimbu.org> | 2010-02-24 14:34:19 +0100 |
|---|---|---|
| committer | Bram Moolenaar <bram@zimbu.org> | 2010-02-24 14:34:19 +0100 |
| commit | 594d15d615d6c779754cd50db6a047aad2428905 (patch) | |
| tree | c4bfe8c5efb1c26b4e38d38d23b3c49585f5c4fc /src/diff.c | |
| parent | d7b9d841f8309e2e6f2460b8c8ef33e00ad85034 (diff) | |
| download | vim-7.2.370.tar.gz | |
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.c | 35 |
1 files changed, 20 insertions, 15 deletions
@@ -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) |
