aboutsummaryrefslogtreecommitdiff
path: root/test/functional/ui/mouse_spec.lua
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2023-08-18 19:31:15 +0800
committerzeertzjq <zeertzjq@outlook.com>2023-08-18 19:34:25 +0800
commit1d3d50e8f0e1c3438ad77a8727ad8d3f1333c79a (patch)
treedc596952a745fc70544f15b5751dff122a3392c7 /test/functional/ui/mouse_spec.lua
parent551998b7eed7dd411e4d14f65b108ae8a93c4081 (diff)
downloadrneovim-1d3d50e8f0e1c3438ad77a8727ad8d3f1333c79a.tar.gz
rneovim-1d3d50e8f0e1c3438ad77a8727ad8d3f1333c79a.tar.bz2
rneovim-1d3d50e8f0e1c3438ad77a8727ad8d3f1333c79a.zip
test(ui/mouse_spec): mouse click with matchadd() concealed text
Diffstat (limited to 'test/functional/ui/mouse_spec.lua')
-rw-r--r--test/functional/ui/mouse_spec.lua102
1 files changed, 70 insertions, 32 deletions
diff --git a/test/functional/ui/mouse_spec.lua b/test/functional/ui/mouse_spec.lua
index 657cc0c325..9c22d112d3 100644
--- a/test/functional/ui/mouse_spec.lua
+++ b/test/functional/ui/mouse_spec.lua
@@ -1073,38 +1073,7 @@ describe('ui/mouse/input', function()
]])
end)
- describe('on concealed text', function()
- -- Helpful for reading the test expectations:
- -- :match Error /\^/
-
- before_each(function()
- screen:try_resize(25, 7)
- screen:set_default_attr_ids({
- [0] = {bold=true, foreground=Screen.colors.Blue},
- c = { foreground = Screen.colors.LightGrey, background = Screen.colors.DarkGray },
- sm = {bold = true},
- })
- feed('ggdG')
-
- command([[setlocal concealcursor=ni nowrap shiftwidth=2 tabstop=4 list listchars=tab:>-]])
- command([[syntax region X0 matchgroup=X1 start=/\*/ end=/\*/ concealends contains=X2]])
- command([[syntax match X2 /cats/ conceal cchar=X contained]])
- command([[syntax match X3 /\n\@<=x/ conceal cchar=>]])
- command([[highlight link X0 Normal]])
- command([[highlight link X1 NonText]])
- command([[highlight link X2 NonText]])
- command([[highlight link X3 NonText]])
-
- -- First column is there to retain the tabs.
- insert([[
- |Section *t1*
- | *t2* *t3* *t4*
- |x 私は猫が大好き *cats* ✨🐈✨
- ]])
-
- feed('gg<c-v>Gxgg')
- end)
-
+ local function test_mouse_click_conceal()
it('(level 1) click on non-wrapped lines', function()
feed_command('let &conceallevel=1', 'echo')
@@ -1637,6 +1606,75 @@ describe('ui/mouse/input', function()
]])
end) -- level 3 - wrapped
+ end
+
+ describe('on concealed text', function()
+ -- Helpful for reading the test expectations:
+ -- :match Error /\^/
+
+ before_each(function()
+ screen:try_resize(25, 7)
+ screen:set_default_attr_ids({
+ [0] = { bold = true, foreground = Screen.colors.Blue },
+ c = { foreground = Screen.colors.LightGrey, background = Screen.colors.DarkGray },
+ sm = { bold = true },
+ })
+ feed('ggdG')
+
+ command([[setlocal concealcursor=ni nowrap shiftwidth=2 tabstop=4 list listchars=tab:>-]])
+ command([[highlight link X0 Normal]])
+ command([[highlight link X1 NonText]])
+ command([[highlight link X2 NonText]])
+ command([[highlight link X3 NonText]])
+
+ -- First column is there to retain the tabs.
+ insert([[
+ |Section *t1*
+ | *t2* *t3* *t4*
+ |x 私は猫が大好き *cats* ✨🐈✨
+ ]])
+
+ feed('gg<c-v>Gxgg')
+ end)
+
+ describe('(syntax)', function()
+ before_each(function()
+ command([[syntax region X0 matchgroup=X1 start=/\*/ end=/\*/ concealends contains=X2]])
+ command([[syntax match X2 /cats/ conceal cchar=X contained]])
+ command([[syntax match X3 /\n\@<=x/ conceal cchar=>]])
+ end)
+ test_mouse_click_conceal()
+ end)
+
+ describe('(matchadd())', function()
+ before_each(function()
+ funcs.matchadd('Conceal', [[\*]])
+ funcs.matchadd('Conceal', [[cats]], 10, -1, { conceal = 'X' })
+ funcs.matchadd('Conceal', [[\n\@<=x]], 10, -1, { conceal = '>' })
+ end)
+ test_mouse_click_conceal()
+ end)
+
+ -- FIXME: cannot make extmark conceal behave exactly like syntax conceal without cchar
+ pending('(extmarks)', function()
+ before_each(function()
+ local ns = meths.create_namespace('conceal')
+ meths.buf_set_extmark(0, ns, 0, 11, { end_col = 12, conceal = '' })
+ meths.buf_set_extmark(0, ns, 0, 14, { end_col = 15, conceal = '' })
+ meths.buf_set_extmark(0, ns, 1, 5, { end_col = 6, conceal = '' })
+ meths.buf_set_extmark(0, ns, 1, 8, { end_col = 9, conceal = '' })
+ meths.buf_set_extmark(0, ns, 1, 10, { end_col = 11, conceal = '' })
+ meths.buf_set_extmark(0, ns, 1, 13, { end_col = 14, conceal = '' })
+ meths.buf_set_extmark(0, ns, 1, 15, { end_col = 16, conceal = '' })
+ meths.buf_set_extmark(0, ns, 1, 18, { end_col = 19, conceal = '' })
+ meths.buf_set_extmark(0, ns, 2, 24, { end_col = 25, conceal = '' })
+ meths.buf_set_extmark(0, ns, 2, 29, { end_col = 30, conceal = '' })
+ meths.buf_set_extmark(0, ns, 2, 25, { end_col = 29, conceal = 'X' })
+ meths.buf_set_extmark(0, ns, 2, 0, { end_col = 1, conceal = '>' })
+ end)
+ test_mouse_click_conceal()
+ end)
+
end)
it('getmousepos works correctly', function()