diff options
| author | Luuk van Baal <luukvbaal@gmail.com> | 2024-11-23 23:03:46 +0100 |
|---|---|---|
| committer | luukvbaal <luukvbaal@gmail.com> | 2025-02-25 13:09:01 +0100 |
| commit | f58e7d5fac1c4f63f0ba3e59134591239182910e (patch) | |
| tree | 1b180a27cb3c4f4f521188b8e6416d3adfc79206 /test | |
| parent | a31ccc3b1f65fd86780c03fec9c6e1bf56e30e35 (diff) | |
| download | rneovim-f58e7d5fac1c4f63f0ba3e59134591239182910e.tar.gz rneovim-f58e7d5fac1c4f63f0ba3e59134591239182910e.tar.bz2 rneovim-f58e7d5fac1c4f63f0ba3e59134591239182910e.zip | |
feat(marks): add conceal_lines to nvim_buf_set_extmark()
Implement an extmark property that conceals lines vertically.
Diffstat (limited to 'test')
| -rw-r--r-- | test/functional/api/extmark_spec.lua | 2 | ||||
| -rw-r--r-- | test/functional/ui/decorations_spec.lua | 221 |
2 files changed, 223 insertions, 0 deletions
diff --git a/test/functional/api/extmark_spec.lua b/test/functional/api/extmark_spec.lua index fd392d479d..6f53076f1f 100644 --- a/test/functional/api/extmark_spec.lua +++ b/test/functional/api/extmark_spec.lua @@ -1556,6 +1556,7 @@ describe('API/extmarks', function() it('can get details', function() set_extmark(ns, marks[1], 0, 0, { conceal = 'c', + conceal_lines = '', cursorline_hl_group = 'Statement', end_col = 0, end_right_gravity = true, @@ -1585,6 +1586,7 @@ describe('API/extmarks', function() 0, { conceal = 'c', + conceal_lines = '', cursorline_hl_group = 'Statement', end_col = 0, end_right_gravity = true, diff --git a/test/functional/ui/decorations_spec.lua b/test/functional/ui/decorations_spec.lua index 99e6b5f78f..1d0021363b 100644 --- a/test/functional/ui/decorations_spec.lua +++ b/test/functional/ui/decorations_spec.lua @@ -2625,6 +2625,227 @@ describe('extmark decorations', function() | ]]) end) + + it ('conceal_lines', function() + insert(example_text) + exec('set number conceallevel=3') + feed('ggj') + local not_concealed = { + grid = [[ + {2: 1 }for _,item in ipairs(items) do | + {2: 2 }^ local text, hl_id_cell, count = unpack(ite| + {2: }m) | + {2: 3 } if hl_id_cell ~= nil then | + {2: 4 } hl_id = hl_id_cell | + {2: 5 } end | + {2: 6 } for _ = 1, (count or 1) do | + {2: 7 } local cell = line[colpos] | + {2: 8 } cell.text = text | + {2: 9 } cell.hl_id = hl_id | + {2: 10 } colpos = colpos+1 | + {2: 11 } end | + {2: 12 }end | + {1:~ }| + | + ]] + } + screen:expect(not_concealed) + api.nvim_buf_set_extmark(0, ns, 1, 0, { conceal_lines = "" }) + screen:expect_unchanged() + feed('j') + local concealed = { + grid = [[ + {2: 1 }for _,item in ipairs(items) do | + {2: 3 }^ if hl_id_cell ~= nil then | + {2: 4 } hl_id = hl_id_cell | + {2: 5 } end | + {2: 6 } for _ = 1, (count or 1) do | + {2: 7 } local cell = line[colpos] | + {2: 8 } cell.text = text | + {2: 9 } cell.hl_id = hl_id | + {2: 10 } colpos = colpos+1 | + {2: 11 } end | + {2: 12 }end | + {1:~ }|*3 + | + ]] + } + screen:expect(concealed) + feed('k') + screen:expect(not_concealed) + exec('set concealcursor=n') + screen:expect(concealed) + api.nvim_buf_set_extmark(0, ns, 3, 0, { conceal_lines = "" }) + screen:expect({ + grid = [[ + {2: 1 }for _,item in ipairs(items) do | + {2: 3 }^ if hl_id_cell ~= nil then | + {2: 5 } end | + {2: 6 } for _ = 1, (count or 1) do | + {2: 7 } local cell = line[colpos] | + {2: 8 } cell.text = text | + {2: 9 } cell.hl_id = hl_id | + {2: 10 } colpos = colpos+1 | + {2: 11 } end | + {2: 12 }end | + {1:~ }|*4 + | + ]] + }) + feed('kjj') + screen:expect_unchanged() + api.nvim_buf_set_extmark(0, ns, 4, 0, { conceal_lines = "" }) + feed('kjjjC') + screen:expect({ + grid = [[ + {2: 1 }for _,item in ipairs(items) do | + {2: 3 } if hl_id_cell ~= nil then | + {2: 5 }^ | + {2: 6 } for _ = 1, (count or 1) do | + {2: 7 } local cell = line[colpos] | + {2: 8 } cell.text = text | + {2: 9 } cell.hl_id = hl_id | + {2: 10 } colpos = colpos+1 | + {2: 11 } end | + {2: 12 }end | + {1:~ }|*4 + {24:-- INSERT --} | + ]] + }) + feed('<esc>') + screen:expect({ + grid = [[ + {2: 1 }for _,item in ipairs(items) do | + {2: 3 } if hl_id_cell ~= nil then | + {2: 6 }^ for _ = 1, (count or 1) do | + {2: 7 } local cell = line[colpos] | + {2: 8 } cell.text = text | + {2: 9 } cell.hl_id = hl_id | + {2: 10 } colpos = colpos+1 | + {2: 11 } end | + {2: 12 }end | + {1:~ }|*5 + | + ]] + }) + feed('kji') + screen:expect({ + grid = [[ + {2: 1 }for _,item in ipairs(items) do | + {2: 3 } if hl_id_cell ~= nil then | + {2: 5 }^ | + {2: 6 } for _ = 1, (count or 1) do | + {2: 7 } local cell = line[colpos] | + {2: 8 } cell.text = text | + {2: 9 } cell.hl_id = hl_id | + {2: 10 } colpos = colpos+1 | + {2: 11 } end | + {2: 12 }end | + {1:~ }|*4 + {24:-- INSERT --} | + ]] + }) + feed('conceal text') + screen:expect({ + grid = [[ + {2: 1 }for _,item in ipairs(items) do | + {2: 3 } if hl_id_cell ~= nil then | + {2: 5 }conceal text^ | + {2: 6 } for _ = 1, (count or 1) do | + {2: 7 } local cell = line[colpos] | + {2: 8 } cell.text = text | + {2: 9 } cell.hl_id = hl_id | + {2: 10 } colpos = colpos+1 | + {2: 11 } end | + {2: 12 }end | + {1:~ }|*4 + {24:-- INSERT --} | + ]] + }) + feed('<esc>') + screen:expect({ + grid = [[ + {2: 1 }for _,item in ipairs(items) do | + {2: 3 } if hl_id_cell ~= nil then | + {2: 6 } for _ =^ 1, (count or 1) do | + {2: 7 } local cell = line[colpos] | + {2: 8 } cell.text = text | + {2: 9 } cell.hl_id = hl_id | + {2: 10 } colpos = colpos+1 | + {2: 11 } end | + {2: 12 }end | + {1:~ }|*5 + | + ]] + }) + feed('ggzfj') + screen:expect({ + grid = [[ + {2: 1 }{33:^+-- 2 lines: for _,item in ipairs(items) do··}| + {2: 3 } if hl_id_cell ~= nil then | + {2: 6 } for _ = 1, (count or 1) do | + {2: 7 } local cell = line[colpos] | + {2: 8 } cell.text = text | + {2: 9 } cell.hl_id = hl_id | + {2: 10 } colpos = colpos+1 | + {2: 11 } end | + {2: 12 }end | + {1:~ }|*5 + | + ]] + }) + feed('j') + screen:expect({ + grid = [[ + {2: 1 }{33:+-- 2 lines: for _,item in ipairs(items) do··}| + {2: 3 }^ if hl_id_cell ~= nil then | + {2: 6 } for _ = 1, (count or 1) do | + {2: 7 } local cell = line[colpos] | + {2: 8 } cell.text = text | + {2: 9 } cell.hl_id = hl_id | + {2: 10 } colpos = colpos+1 | + {2: 11 } end | + {2: 12 }end | + {1:~ }|*5 + | + ]] + }) + feed('ggzdjzfj') + screen:expect({ + grid = [[ + {2: 1 }for _,item in ipairs(items) do | + {2: 6 }^ for _ = 1, (count or 1) do | + {2: 7 } local cell = line[colpos] | + {2: 8 } cell.text = text | + {2: 9 } cell.hl_id = hl_id | + {2: 10 } colpos = colpos+1 | + {2: 11 } end | + {2: 12 }end | + {1:~ }|*6 + | + ]] + }) + feed('jj') + screen:expect_unchanged() + -- Below virtual line belonging to line above concealed line is drawn. + api.nvim_buf_set_extmark(0, ns, 0, 0, { virt_lines = { { { 'line 1 below' } } } }) + -- Above virtual line belonging to concealed line isn't. + api.nvim_buf_set_extmark(0, ns, 1, 0, { + virt_lines = { { { 'line 2 above' } } }, + virt_lines_above = true + }) + screen:expect([[ + {2: 1 }for _,item in ipairs(items) do | + {2: }line 1 below | + {2: 6 }^ for _ = 1, (count or 1) do | + {2: 9 } cell.hl_id = hl_id | + {2: 10 } colpos = colpos+1 | + {2: 11 } end | + {2: 12 }end | + {1:~ }|*7 + | + ]]) + end) end) describe('decorations: inline virtual text', function() |