aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMatthieu Coudron <mattator@gmail.com>2020-07-21 23:03:14 +0200
committerGitHub <noreply@github.com>2020-07-21 23:03:14 +0200
commit326b87feb6179d1b36375844eab493e0bb4dbf7f (patch)
tree94a72386f2ee4f085ae56197277bec575e6105a4 /src
parentb059fb5c677ccc42104bd1a55ccb770186f4cc44 (diff)
parentbe057197d3b74df1886c3b5e2026276ef7c2116e (diff)
downloadrneovim-326b87feb6179d1b36375844eab493e0bb4dbf7f.tar.gz
rneovim-326b87feb6179d1b36375844eab493e0bb4dbf7f.tar.bz2
rneovim-326b87feb6179d1b36375844eab493e0bb4dbf7f.zip
Merge pull request #12646 from vigoux/ts-fix-tilde
buffer_updates: set `deleted_bytes` correctly when hitting `~` When doing bytebased update, we need to revisit this to let outer calls of ml_get_line handle the deleted part (will be more precise)
Diffstat (limited to 'src')
-rw-r--r--src/nvim/memline.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/nvim/memline.c b/src/nvim/memline.c
index 6e074b3249..d5788d96b3 100644
--- a/src/nvim/memline.c
+++ b/src/nvim/memline.c
@@ -1876,8 +1876,10 @@ errorret:
buf->b_ml.ml_line_lnum = lnum;
buf->b_ml.ml_flags &= ~ML_LINE_DIRTY;
}
- if (will_change)
+ if (will_change) {
buf->b_ml.ml_flags |= (ML_LOCKED_DIRTY | ML_LOCKED_POS);
+ ml_add_deleted_len_buf(buf, buf->b_ml.ml_line_ptr, -1);
+ }
return buf->b_ml.ml_line_ptr;
}
@@ -2445,14 +2447,14 @@ int ml_replace_buf(buf_T *buf, linenr_T lnum, char_u *line, bool copy)
if (buf->b_ml.ml_line_lnum != lnum) { // other line buffered
ml_flush_line(buf); // flush it
} else if (buf->b_ml.ml_flags & ML_LINE_DIRTY) { // same line allocated
- ml_add_deleted_len(buf->b_ml.ml_line_ptr, -1);
+ ml_add_deleted_len_buf(buf, buf->b_ml.ml_line_ptr, -1);
readlen = false; // already added the length
xfree(buf->b_ml.ml_line_ptr); // free it
}
if (readlen && kv_size(buf->update_callbacks)) {
- ml_add_deleted_len(ml_get_buf(buf, lnum, false), -1);
+ ml_add_deleted_len_buf(buf, ml_get_buf(buf, lnum, false), -1);
}
buf->b_ml.ml_line_ptr = line;
@@ -2539,7 +2541,7 @@ static int ml_delete_int(buf_T *buf, linenr_T lnum, bool message)
// Line should always have an NL char internally (represented as NUL),
// even if 'noeol' is set.
assert(line_size >= 1);
- ml_add_deleted_len((char_u *)dp + line_start, line_size-1);
+ ml_add_deleted_len_buf(buf, (char_u *)dp + line_start, line_size-1);
/*
* special case: If there is only one line in the data block it becomes empty.