diff options
-rw-r--r-- | runtime/doc/fold.txt | 4 | ||||
-rw-r--r-- | src/nvim/normal.c | 18 | ||||
-rw-r--r-- | src/nvim/version.c | 2 |
3 files changed, 18 insertions, 6 deletions
diff --git a/runtime/doc/fold.txt b/runtime/doc/fold.txt index ef69835462..03dd6a61ba 100644 --- a/runtime/doc/fold.txt +++ b/runtime/doc/fold.txt @@ -362,7 +362,7 @@ zX Undo manually opened and closed folds: re-apply 'foldlevel'. Also forces recomputing folds, like |zx|. *zm* -zm Fold more: Subtract one from 'foldlevel'. If 'foldlevel' was +zm Fold more: Subtract |v:count1| from 'foldlevel'. If 'foldlevel' was already zero nothing happens. 'foldenable' will be set. @@ -371,7 +371,7 @@ zM Close all folds: set 'foldlevel' to 0. 'foldenable' will be set. *zr* -zr Reduce folding: Add one to 'foldlevel'. +zr Reduce folding: Add |v:count1| to 'foldlevel'. *zR* zR Open all folds. This sets 'foldlevel' to highest fold level. diff --git a/src/nvim/normal.c b/src/nvim/normal.c index de575c0234..fce3558e9f 100644 --- a/src/nvim/normal.c +++ b/src/nvim/normal.c @@ -4253,8 +4253,13 @@ dozet: break; /* "zm": fold more */ - case 'm': if (curwin->w_p_fdl > 0) - --curwin->w_p_fdl; + case 'm': + if (curwin->w_p_fdl > 0) { + curwin->w_p_fdl -= cap->count1; + if (curwin->w_p_fdl < 0) { + curwin->w_p_fdl = 0; + } + } old_fdl = -1; /* force an update */ curwin->w_p_fen = true; break; @@ -4266,7 +4271,14 @@ dozet: break; /* "zr": reduce folding */ - case 'r': ++curwin->w_p_fdl; + case 'r': + curwin->w_p_fdl += cap->count1; + { + int d = getDeepestNesting(); + if (curwin->w_p_fdl >= d) { + curwin->w_p_fdl = d; + } + } break; /* "zR": open all folds */ diff --git a/src/nvim/version.c b/src/nvim/version.c index 5a0f7d524d..6485195472 100644 --- a/src/nvim/version.c +++ b/src/nvim/version.c @@ -238,7 +238,7 @@ static int included_patches[] = { // 689, // 688, // 687 NA - // 686, + 686, // 685, // 684, // 683 NA |