0
0
mirror of https://github.com/vim/vim.git synced 2025-09-29 04:34:16 -04:00

patch 8.2.4403: ml_get error with nested folds and deleting lines

Problem:    ml_get error with nested folds and deleting lines.
Solution:   Correct the last line number before calling hasFoldingWin().
This commit is contained in:
Bram Moolenaar
2022-02-16 20:30:52 +00:00
parent ae6f1d8b14
commit 9437737833
2 changed files with 7 additions and 3 deletions

View File

@@ -552,6 +552,8 @@ changed_common(
{
if (wp->w_buffer == curbuf)
{
linenr_T last = lnume + xtra - 1; // last line after the change
// Mark this window to be redrawn later.
if (wp->w_redr_type < VALID)
wp->w_redr_type = VALID;
@@ -561,7 +563,7 @@ changed_common(
#ifdef FEAT_FOLDING
// Update the folds for this window. Can't postpone this, because
// a following operator might work on the whole fold: ">>dd".
foldUpdate(wp, lnum, lnume + xtra - 1);
foldUpdate(wp, lnum, last);
// The change may cause lines above or below the change to become
// included in a fold. Set lnum/lnume to the first/last line that
@@ -571,8 +573,8 @@ changed_common(
i = hasFoldingWin(wp, lnum, &lnum, NULL, FALSE, NULL);
if (wp->w_cursor.lnum == lnum)
wp->w_cline_folded = i;
i = hasFoldingWin(wp, lnume, NULL, &lnume, FALSE, NULL);
if (wp->w_cursor.lnum == lnume)
i = hasFoldingWin(wp, last, NULL, &last, FALSE, NULL);
if (wp->w_cursor.lnum == last)
wp->w_cline_folded = i;
// If the changed line is in a range of previously folded lines,

View File

@@ -750,6 +750,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
4403,
/**/
4402,
/**/