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:
@@ -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,
|
||||||
|
@@ -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,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user