fix(api): nvim_buf_get_offset in a new buffer with zero or one lines

fixes #24930
This commit is contained in:
bfredl 2023-08-30 11:53:58 +02:00
parent 62869da11c
commit b051b131f5
2 changed files with 17 additions and 0 deletions

View File

@ -3934,6 +3934,11 @@ long ml_find_line_or_offset(buf_T *buf, linenr_T lnum, long *offp, bool no_ff)
if (buf->b_ml.ml_usedchunks == -1
|| buf->b_ml.ml_chunksize == NULL
|| 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)) {
return lnum - 1;
}
return -1;
}

View File

@ -1151,6 +1151,18 @@ describe('api/buf', function()
eq(6, bufmeths.get_offset(1,1))
command("bunload! 1")
eq(-1, bufmeths.get_offset(1,1))
eq(-1, bufmeths.get_offset(1,0))
end)
it('works in empty buffer', function()
eq(0, get_offset(0))
eq(1, get_offset(1))
end)
it('works in buffer with one line inserted', function()
feed('itext')
eq(0, get_offset(0))
eq(5, get_offset(1))
end)
end)