changeset 28974:65946c949965 v8.2.5009

patch 8.2.5009: fold may not be closeable after appending Commit: https://github.com/vim/vim/commit/e8c4a64bffbe628a46dc172d04cfc2db6e8dd8b6 Author: Brandon Simmons <simmsbra@gmail.com> Date: Mon May 23 15:33:08 2022 +0100 patch 8.2.5009: fold may not be closeable after appending Problem: Fold may not be closeable after appending. Solution: Set the fd_small flag to MAYBE. (Brandon Simmons, closes https://github.com/vim/vim/issues/10471)
author Bram Moolenaar <Bram@vim.org>
date Mon, 23 May 2022 16:45:03 +0200
parents 8ed9b1009bfb
children 820df6500436
files src/fold.c src/testdir/test_fold.vim src/version.c
diffstat 3 files changed, 22 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/fold.c
+++ b/src/fold.c
@@ -2574,6 +2574,7 @@ foldUpdateIEMSRecurse(
 					(long)(fp->fd_top - firstlnum));
 			    fp->fd_len += fp->fd_top - firstlnum;
 			    fp->fd_top = firstlnum;
+			    fp->fd_small = MAYBE;
 			    fold_changed = TRUE;
 			}
 			else if ((flp->start != 0 && lvl == level)
--- a/src/testdir/test_fold.vim
+++ b/src/testdir/test_fold.vim
@@ -1528,4 +1528,23 @@ func Test_indent_one_line_fold_close()
   bw!
 endfunc
 
+" Make sure that when appending [an indented line then a blank line] right
+" before a single indented line, the resulting extended fold can be closed
+func Test_indent_append_blank_small_fold_close()
+  new
+  setlocal sw=2 foldmethod=indent
+  " at first, the fold at the second line can't be closed since it's smaller
+  " than foldminlines
+  let lines =<< trim END
+    line 1
+      line 4
+  END
+  call setline(1, lines)
+  call append(1, ['  line 2', ''])
+  " close all folds
+  normal zM
+  call assert_notequal(-1, foldclosed(2)) " the fold should be closed now
+  bw!
+endfunc
+
 " vim: shiftwidth=2 sts=2 expandtab
--- a/src/version.c
+++ b/src/version.c
@@ -735,6 +735,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    5009,
+/**/
     5008,
 /**/
     5007,