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:
34
src/fold.c
34
src/fold.c
@@ -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. */
|
||||
|
Reference in New Issue
Block a user