fix(marks): adjust marks when unloading "nofile" buffer #39118

Problem:  Marks are not adjusted unloading a buffer that doesn't exist
          on disk. E.g. extmarks are still valid (and will be beyond the
          end of the buffer if the buffer is reloaded), even though the
          text is lost.
Solution: Adjust marks for a cleared buffer when unloading a buffer that
          doesn't exist on disk.
This commit is contained in:
luukvbaal
2026-04-18 12:53:00 +02:00
committed by GitHub
parent 6b9b4a1377
commit 68f7acaaae
2 changed files with 18 additions and 0 deletions

View File

@@ -1959,6 +1959,16 @@ describe('API/extmarks', function()
},
}
end)
it('are invalidated when "nofile" buffer is unloaded', function()
local buf = api.nvim_create_buf(false, true)
api.nvim_buf_set_name(buf, 'foo')
api.nvim_buf_set_lines(buf, 0, 0, false, { 'foo', 'bar' })
local id = api.nvim_buf_set_extmark(buf, ns, 1, 0, { invalidate = true })
api.nvim_buf_delete(buf, { unload = true })
local mark = { 0, 0, { invalid = true, invalidate = true, ns_id = 3, right_gravity = true } }
eq(mark, api.nvim_buf_get_extmark_by_id(buf, ns, id, { details = true }))
end)
end)
describe('Extmarks buffer api with many marks', function()