From 1159b168dd94c1a25b4284c6544de385855df6f6 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Tue, 28 Feb 2017 21:53:56 +0100 Subject: patch 8.0.0388: filtering lines changes folds Problem: filtering lines through "cat", without changing the line count, changes manual folds. Solution: Change how marks and folds are adjusted. (Matthew Malcomson, from neovim #6194. --- src/fold.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'src/fold.c') diff --git a/src/fold.c b/src/fold.c index d3635a6d7..cba137515 100644 --- a/src/fold.c +++ b/src/fold.c @@ -1576,16 +1576,23 @@ foldMarkAdjustRecurse( { /* 5. fold is below line1 and contains line2; need to * correct nested folds too */ - foldMarkAdjustRecurse(&fp->fd_nested, line1 - fp->fd_top, - line2 - fp->fd_top, amount, - amount_after + (fp->fd_top - top)); if (amount == MAXLNUM) { + foldMarkAdjustRecurse(&fp->fd_nested, + line1 - fp->fd_top, + line2 - fp->fd_top, + amount, + amount_after + (fp->fd_top - top)); fp->fd_len -= line2 - fp->fd_top + 1; fp->fd_top = line1; } else { + foldMarkAdjustRecurse(&fp->fd_nested, + line1 - fp->fd_top, + line2 - fp->fd_top, + amount, + amount_after - amount); fp->fd_len += amount_after - amount; fp->fd_top += amount; } -- cgit v1.2.1