aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Dewar <seandewar@users.noreply.github.com>2022-02-19 15:13:37 +0000
committerSean Dewar <seandewar@users.noreply.github.com>2022-02-19 15:29:17 +0000
commit30bf40ec4b44172d2720a6f2365cf6acb5ad8863 (patch)
treef0966c7a212c80fd6624512aedfdfcc3c50509fd
parent5cb45dffba730d0009d4c4d6b26efaa994727e2d (diff)
downloadrneovim-30bf40ec4b44172d2720a6f2365cf6acb5ad8863.tar.gz
rneovim-30bf40ec4b44172d2720a6f2365cf6acb5ad8863.tar.bz2
rneovim-30bf40ec4b44172d2720a6f2365cf6acb5ad8863.zip
vim-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(). https://github.com/vim/vim/commit/943773783384a5ff63f57769d37ddabf8156fe1e
-rw-r--r--src/nvim/change.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/nvim/change.c b/src/nvim/change.c
index 6ac759d5e0..736867b6d3 100644
--- a/src/nvim/change.c
+++ b/src/nvim/change.c
@@ -223,19 +223,20 @@ static void changed_common(linenr_T lnum, colnr_T col, linenr_T lnume, long xtra
// values for the cursor.
// 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);
+ linenr_T last = lnume + xtra - 1; // last line after the change
+ 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
// might be displayed differently.
// Set w_cline_folded here as an efficient way to update it when
- // inserting lines just above a closed fold. */
+ // inserting lines just above a closed fold.
bool folded = hasFoldingWin(wp, lnum, &lnum, NULL, false, NULL);
if (wp->w_cursor.lnum == lnum) {
wp->w_cline_folded = folded;
}
- folded = hasFoldingWin(wp, lnume, NULL, &lnume, false, NULL);
- if (wp->w_cursor.lnum == lnume) {
+ folded = hasFoldingWin(wp, last, NULL, &last, false, NULL);
+ if (wp->w_cursor.lnum == last) {
wp->w_cline_folded = folded;
}