0
0
mirror of https://github.com/vim/vim.git synced 2025-09-30 04:44:14 -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) if (wp->w_buffer == curbuf)
{ {
linenr_T last = lnume + xtra - 1; // last line after the change
// Mark this window to be redrawn later. // Mark this window to be redrawn later.
if (wp->w_redr_type < VALID) if (wp->w_redr_type < VALID)
wp->w_redr_type = VALID; wp->w_redr_type = VALID;
@@ -561,7 +563,7 @@ changed_common(
#ifdef FEAT_FOLDING #ifdef FEAT_FOLDING
// Update the folds for this window. Can't postpone this, because // Update the folds for this window. Can't postpone this, because
// a following operator might work on the whole fold: ">>dd". // 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 // 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 // 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); i = hasFoldingWin(wp, lnum, &lnum, NULL, FALSE, NULL);
if (wp->w_cursor.lnum == lnum) if (wp->w_cursor.lnum == lnum)
wp->w_cline_folded = i; wp->w_cline_folded = i;
i = hasFoldingWin(wp, lnume, NULL, &lnume, FALSE, NULL); i = hasFoldingWin(wp, last, NULL, &last, FALSE, NULL);
if (wp->w_cursor.lnum == lnume) if (wp->w_cursor.lnum == last)
wp->w_cline_folded = i; wp->w_cline_folded = i;
// If the changed line is in a range of previously folded lines, // 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[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
4403,
/**/ /**/
4402, 4402,
/**/ /**/