summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--runtime/doc/fold.txt4
-rw-r--r--src/normal.c14
-rw-r--r--src/version.c2
3 files changed, 16 insertions, 4 deletions
diff --git a/runtime/doc/fold.txt b/runtime/doc/fold.txt
index 6ae2ff868..20017d353 100644
--- a/runtime/doc/fold.txt
+++ b/runtime/doc/fold.txt
@@ -365,7 +365,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.
@@ -374,7 +374,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/normal.c b/src/normal.c
index d173c737b..c29ab1a48 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -5098,7 +5098,11 @@ dozet:
/* "zm": fold more */
case 'm': if (curwin->w_p_fdl > 0)
- --curwin->w_p_fdl;
+ {
+ 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;
@@ -5110,7 +5114,13 @@ 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/version.c b/src/version.c
index 6156c3731..89e70848a 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 686,
+/**/
685,
/**/
684,