diff options
| author | Justin M. Keyes <justinkz@gmail.com> | 2026-02-16 09:37:36 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-02-16 09:37:36 -0500 |
| commit | f4e88cfe429f990a4830f0dca255f77dae4ff149 (patch) | |
| tree | f9a0984bb5c67755e54a356737ba467ba000c8e0 /test/functional/api/extmark_spec.lua | |
| parent | a39334767321bf56dc6d0baedb048066fc56e11c (diff) | |
| parent | 51dc752e6cfaee5f76424b16c4c48bd4915bbffb (diff) | |
| download | rneovim-f4e88cfe429f990a4830f0dca255f77dae4ff149.tar.gz rneovim-f4e88cfe429f990a4830f0dca255f77dae4ff149.tar.bz2 rneovim-f4e88cfe429f990a4830f0dca255f77dae4ff149.zip | |
Merge #37875 prompt-buffer fixes
Diffstat (limited to 'test/functional/api/extmark_spec.lua')
| -rw-r--r-- | test/functional/api/extmark_spec.lua | 50 |
1 files changed, 48 insertions, 2 deletions
diff --git a/test/functional/api/extmark_spec.lua b/test/functional/api/extmark_spec.lua index 2fe073eeb4..9492e498dd 100644 --- a/test/functional/api/extmark_spec.lua +++ b/test/functional/api/extmark_spec.lua @@ -11,7 +11,9 @@ local feed = n.feed local clear = n.clear local command = n.command local exec = n.exec +local exec_lua = n.exec_lua local api = n.api +local fn = n.fn local assert_alive = n.assert_alive local function expect(contents) @@ -1562,10 +1564,54 @@ describe('API/extmarks', function() it('in prompt buffer', function() feed('dd') - local id = set_extmark(ns, marks[1], 0, 0, {}) + set_extmark(ns, marks[1], 0, 0, {}) api.nvim_set_option_value('buftype', 'prompt', {}) feed('i<esc>') - eq({ { id, 0, 2 } }, get_extmarks(ns, 0, -1)) + eq({ { marks[1], 0, 2 } }, get_extmarks(ns, 0, -1)) + fn.prompt_setprompt('', 'foo > ') + eq({ { marks[1], 0, 6 } }, get_extmarks(ns, 0, -1)) + feed('ihello') + eq({ { marks[1], 0, 11 } }, get_extmarks(ns, 0, -1)) + + local function get_extmark_range(id) + local rv = get_extmark_by_id(ns, id, { details = true }) + return rv[3].invalid and 'invalid' or { rv[1], rv[2], rv[3].end_row, rv[3].end_col } + end + + set_extmark(ns, marks[2], 0, 0, { invalidate = true, end_col = 6 }) + set_extmark(ns, marks[3], 0, 6, { invalidate = true, end_col = 11 }) + set_extmark(ns, marks[4], 0, 0, { invalidate = true, end_col = 11 }) + set_extmark(ns, marks[5], 0, 0, { invalidate = true, end_row = 1 }) + fn.prompt_setprompt('', 'floob > ') + eq({ 0, 13 }, get_extmark_range(marks[1])) + eq('invalid', get_extmark_range(marks[2])) -- extmark spanning old prompt invalidated + eq({ 0, 8, 0, 13 }, get_extmark_range(marks[3])) + eq({ 0, 8, 0, 13 }, get_extmark_range(marks[4])) + eq({ 0, 8, 1, 0 }, get_extmark_range(marks[5])) + + set_extmark(ns, marks[2], 0, 0, { invalidate = true, end_col = 8 }) + set_extmark(ns, marks[3], 0, 8, { invalidate = true, end_col = 13 }) + set_extmark(ns, marks[4], 0, 0, { invalidate = true, end_col = 13 }) + set_extmark(ns, marks[5], 0, 0, { invalidate = true, end_row = 1 }) + -- Do this in the same event. + exec_lua(function() + vim.fn.setpos("':", { 0, 1, 999, 0 }) + vim.fn.prompt_setprompt('', 'discard > ') + end) + eq({ 0, 10 }, get_extmark_range(marks[1])) + eq('invalid', get_extmark_range(marks[2])) -- all spans on line invalidated + eq('invalid', get_extmark_range(marks[3])) + eq('invalid', get_extmark_range(marks[4])) + eq({ 0, 10, 1, 0 }, get_extmark_range(marks[5])) + + feed('hello') + eq({ 0, 15 }, get_extmark_range(marks[1])) + eq({ 0, 15, 1, 0 }, get_extmark_range(marks[5])) + -- init_prompt uses correct range for inserted_bytes when fixing empty prompt. + fn.setline('.', { '', 'last line' }) + eq({ 'discard > ', 'last line' }, api.nvim_buf_get_lines(0, 0, -1, true)) + eq({ 0, 10 }, get_extmark_range(marks[1])) + eq({ 0, 10, 1, 0 }, get_extmark_range(marks[5])) end) it('can get details', function() |