aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohan Klokkhammer Helsing <johanhelsing@gmail.com>2015-11-08 10:19:02 +0100
committerFlorian Walch <florian@fwalch.com>2015-11-08 17:06:33 +0100
commitf65e7bf30c8a00696d5740e35d0f84b9aa648b99 (patch)
treecfbc7852859cf1c1f76e7ddaa72129b7dce63bd1
parentcbb70448788358c0da95090607a40a26f43bdb9f (diff)
downloadrneovim-f65e7bf30c8a00696d5740e35d0f84b9aa648b99.tar.gz
rneovim-f65e7bf30c8a00696d5740e35d0f84b9aa648b99.tar.bz2
rneovim-f65e7bf30c8a00696d5740e35d0f84b9aa648b99.zip
vim-patch:7.4.686 #3629
Problem: "zr" and "zm" do not take a count. Solution: Implement the count, restrict the fold level to the maximum nesting depth. (Marcin Szamotulski) https://github.com/vim/vim/commit/7d2757a47204d00cd47e3db94f1bd248c499d4e3
-rw-r--r--runtime/doc/fold.txt4
-rw-r--r--src/nvim/normal.c18
-rw-r--r--src/nvim/version.c2
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