It is possible to create an unclosable fold.

By executing the following commands in a new instance of vim:
set fdc=5 fdm=marker fmr={{{,}}} fml=1
normal isome text
normal yy10gp
normal osmall fold {{{
normal ggOlarge fold {{{
5
normal oanother large fold {{{1

You create 2 top-level folds and one small subfold of the second
top-level one. Note that the order in which the folds are created is
essential to reproduce the problem. The second of the top-level folds
cannot be closed with any command.

The reason of this wrong behaviour is the use of an uninitialised
variable - in foldSplit() the field fd_small of the newly created fold
is not initialised to any value, while in fact it should be initialised
to MAYBE.

The attached patch fixes the problem.

-- 
Cheers,
Lech

--~--~---------~--~----~------------~-------~--~----~
You received this message from the "vim_dev" maillist.
For more information, visit http://www.vim.org/maillist.php
-~----------~----~----~----~------~----~------~--~---

diff --git a/src/fold.c b/src/fold.c
index a127bf6..684f70e 100644
--- a/src/fold.c
+++ b/src/fold.c
@@ -2817,6 +2817,8 @@ foldSplit(gap, i, top, bot)
     fp[1].fd_top = bot + 1;
     fp[1].fd_len = fp->fd_len - (fp[1].fd_top - fp->fd_top);
     fp[1].fd_flags = fp->fd_flags;
+    fp[1].fd_small = MAYBE;
+    fp->fd_small = MAYBE;
 
     /* Move nested folds below bot to new fold.  There can't be
      * any between top and bot, they have been removed by the caller. */

Raspunde prin e-mail lui