commit d95e3a4c9c8f468158a1f1f23921ebbaae75cf8b
parent 0b74ad0a641f28d9d3da5353e98372d87078bd9d
Author: glepnir <glephunter@gmail.com>
Date: Sat, 9 Dec 2023 17:28:28 +0800
fix: use no_ff instead of ffdos as condition
Problem: line2byte behavior is changed after commit b051b13. It no
longer return `-1` on empty buffer.
Solution: use `nof_ff` instead of `!ff_dos` as condition. Then
compatible behavior of line2byte() is restored.
Diffstat:
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/nvim/memline.c b/src/nvim/memline.c
@@ -3907,7 +3907,7 @@ int ml_find_line_or_offset(buf_T *buf, linenr_T lnum, int *offp, bool no_ff)
|| lnum < 0) {
// memline is currently empty. Although if it is loaded,
// it behaves like there is one empty line.
- if (!ffdos && buf->b_ml.ml_mfp && (lnum == 1 || lnum == 2)) {
+ if (no_ff && buf->b_ml.ml_mfp && (lnum == 1 || lnum == 2)) {
return lnum - 1;
}
return -1;
diff --git a/test/functional/api/buffer_spec.lua b/test/functional/api/buffer_spec.lua
@@ -1876,6 +1876,7 @@ describe('api/buf', function()
it('works in empty buffer', function()
eq(0, get_offset(0))
eq(1, get_offset(1))
+ eq(-1, funcs.line2byte('$'))
end)
it('works in buffer with one line inserted', function()