0
0
mirror of https://github.com/vim/vim.git synced 2025-09-27 04:14:06 -04:00

updated for version 7.2-274

This commit is contained in:
Bram Moolenaar
2009-11-03 13:46:54 +00:00
parent 2f59b5c1cc
commit ec98647b1c
4 changed files with 44 additions and 2 deletions

View File

@@ -2256,6 +2256,40 @@ foldUpdateIEMS(wp, top, bot)
}
}
/*
* If folding is defined by the syntax, it is possible that a change in
* one line will cause all sub-folds of the current fold to change (e.g.,
* closing a C-style comment can cause folds in the subsequent lines to
* appear). To take that into account we should adjust the value of "bot"
* to point to the end of the current fold:
*/
if (foldlevelSyntax == getlevel)
{
garray_T *gap = &wp->w_folds;
fold_T *fp = NULL;
int current_fdl = 0;
linenr_T fold_start_lnum = 0;
linenr_T lnum_rel = fline.lnum;
while (current_fdl < fline.lvl)
{
if (!foldFind(gap, lnum_rel, &fp))
break;
++current_fdl;
fold_start_lnum += fp->fd_top;
gap = &fp->fd_nested;
lnum_rel -= fp->fd_top;
}
if (fp != NULL && current_fdl == fline.lvl)
{
linenr_T fold_end_lnum = fold_start_lnum + fp->fd_len;
if (fold_end_lnum > bot)
bot = fold_end_lnum;
}
}
start = fline.lnum;
end = bot;
/* Do at least one line. */