Mercurial > vim
changeset 5200:b3ff17862b4c v7.4a.026
updated for version 7.4a.026
Problem: ":diffoff" does not remove folds. (Ramel)
Solution: Do not restore 'foldenable' when 'foldmethod' is "manual".
author | Bram Moolenaar <bram@vim.org> |
---|---|
date | Wed, 17 Jul 2013 13:43:39 +0200 |
parents | db7f00da400b |
children | b2ed17f5d19c |
files | src/diff.c src/version.c |
diffstat | 2 files changed, 13 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/diff.c +++ b/src/diff.c @@ -1235,10 +1235,19 @@ ex_diffoff(eap) curbuf = curwin->w_buffer; if (wp->w_p_fdc == diff_foldcolumn) wp->w_p_fdc = wp->w_p_diff_saved ? wp->w_p_fdc_save : 0; - if (wp->w_p_fen) - wp->w_p_fen = wp->w_p_diff_saved ? wp->w_p_fen_save : FALSE; if (wp->w_p_fdl == 0 && wp->w_p_diff_saved) wp->w_p_fdl = wp->w_p_fdl_save; + + if (wp->w_p_fen) + { + /* Only restore 'foldenable' when 'foldmethod' is not + * "manual", otherwise we continue to show the diff folds. */ + if (foldmethodIsManual(wp) || !wp->w_p_diff_saved) + wp->w_p_fen = FALSE; + else + wp->w_p_fen = wp->w_p_fen_save; + } + foldUpdateAll(wp); /* make sure topline is not halfway a fold */ changed_window_setting_win(wp);