aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbfredl <bjorn.linse@gmail.com>2023-08-28 12:36:00 +0200
committerbfredl <bjorn.linse@gmail.com>2023-08-28 12:39:02 +0200
commit132bbd1cbd490a65bc186c4a9f449c6d2f0a7666 (patch)
treeb1a54630aa597beb929aa7db697a4f219a65bf23
parent3a876bd41b235065663c38b0d9f3bdc8868eebc4 (diff)
downloadrneovim-132bbd1cbd490a65bc186c4a9f449c6d2f0a7666.tar.gz
rneovim-132bbd1cbd490a65bc186c4a9f449c6d2f0a7666.tar.bz2
rneovim-132bbd1cbd490a65bc186c4a9f449c6d2f0a7666.zip
fix(api): handle clearing out last line of non-current buffer
fixes #24911
-rw-r--r--src/nvim/memline.c2
-rw-r--r--test/functional/api/buffer_spec.lua12
2 files changed, 13 insertions, 1 deletions
diff --git a/src/nvim/memline.c b/src/nvim/memline.c
index b100942594..5839061aac 100644
--- a/src/nvim/memline.c
+++ b/src/nvim/memline.c
@@ -2523,7 +2523,7 @@ static int ml_delete_int(buf_T *buf, linenr_T lnum, bool message)
set_keep_msg(_(no_lines_msg), 0);
}
- int i = ml_replace(1, "", true);
+ int i = ml_replace_buf(buf, 1, "", true);
buf->b_ml.ml_flags |= ML_EMPTY;
return i;
diff --git a/test/functional/api/buffer_spec.lua b/test/functional/api/buffer_spec.lua
index 0afe619b03..73a8749682 100644
--- a/test/functional/api/buffer_spec.lua
+++ b/test/functional/api/buffer_spec.lua
@@ -279,6 +279,18 @@ describe('api/buf', function()
]]}
end)
end)
+
+ it('handles clearing out non-current buffer #24911', function()
+ local buf = meths.get_current_buf()
+ meths.buf_set_lines(buf, 0, -1, true, {"aaa", "bbb", "ccc"})
+ command("new")
+
+ meths.buf_set_lines(0, 0, -1, true, {"xxx", "yyy", "zzz"})
+
+ meths.buf_set_lines(buf, 0, -1, true, {})
+ eq({"xxx", "yyy", "zzz"}, meths.buf_get_lines(0, 0, -1, true))
+ eq({''}, meths.buf_get_lines(buf, 0, -1, true))
+ end)
end)
describe('deprecated: {get,set,del}_line', function()