mirror of
https://github.com/neovim/neovim.git
synced 2025-09-07 11:58:17 +00:00

The test was hoping to not find a tags file, but didn't actively guard against it. In my case, I had a tags file present which was causing different output to be generated. To fix this, let's set the tags option to look for an unlikely filename.
243 lines
8.2 KiB
Lua
243 lines
8.2 KiB
Lua
local helpers = require('test.functional.helpers')
|
|
local Screen = require('test.functional.ui.screen')
|
|
local clear, feed, nvim = helpers.clear, helpers.feed, helpers.nvim
|
|
local insert, execute = helpers.insert, helpers.execute
|
|
|
|
describe('Mouse input', function()
|
|
local screen, hlgroup_colors
|
|
|
|
setup(function()
|
|
hlgroup_colors = {
|
|
Visual = nvim('name_to_color', 'LightGrey'),
|
|
}
|
|
end)
|
|
|
|
before_each(function()
|
|
clear()
|
|
nvim('set_option', 'mouse', 'a')
|
|
-- set mouset to very high value to ensure that even in valgrind/travis,
|
|
-- nvim will still pick multiple clicks
|
|
nvim('set_option', 'mouset', 5000)
|
|
screen = Screen.new(25, 5)
|
|
screen:attach()
|
|
screen:set_default_attr_ids({
|
|
[1] = {background = hlgroup_colors.Visual}
|
|
})
|
|
feed('itesting<cr>mouse<cr>support and selection<esc>')
|
|
screen:expect([[
|
|
testing |
|
|
mouse |
|
|
support and selectio^ |
|
|
~ |
|
|
|
|
|
]])
|
|
end)
|
|
|
|
after_each(function()
|
|
screen:detach()
|
|
end)
|
|
|
|
it('left click moves cursor', function()
|
|
feed('<LeftMouse><2,1>')
|
|
screen:expect([[
|
|
testing |
|
|
mo^se |
|
|
support and selection |
|
|
~ |
|
|
|
|
|
]])
|
|
feed('<LeftMouse><0,0>')
|
|
screen:expect([[
|
|
^esting |
|
|
mouse |
|
|
support and selection |
|
|
~ |
|
|
|
|
|
]])
|
|
end)
|
|
|
|
it('left drag changes visual selection', function()
|
|
-- drag events must be preceded by a click
|
|
feed('<LeftMouse><2,1>')
|
|
screen:expect([[
|
|
testing |
|
|
mo^se |
|
|
support and selection |
|
|
~ |
|
|
|
|
|
]])
|
|
feed('<LeftDrag><4,1>')
|
|
screen:expect([[
|
|
testing |
|
|
mo{1:us}^ |
|
|
support and selection |
|
|
~ |
|
|
-- VISUAL -- |
|
|
]])
|
|
feed('<LeftDrag><2,2>')
|
|
screen:expect([[
|
|
testing |
|
|
mo{1:use } |
|
|
{1:su}^port and selection |
|
|
~ |
|
|
-- VISUAL -- |
|
|
]])
|
|
feed('<LeftDrag><0,0>')
|
|
screen:expect([[
|
|
^{1:esting } |
|
|
{1:mou}se |
|
|
support and selection |
|
|
~ |
|
|
-- VISUAL -- |
|
|
]])
|
|
end)
|
|
|
|
it('two clicks will select the word and enter VISUAL', function()
|
|
feed('<LeftMouse><2,2><LeftMouse><2,2>')
|
|
screen:expect([[
|
|
testing |
|
|
mouse |
|
|
{1:suppor}^ and selection |
|
|
~ |
|
|
-- VISUAL -- |
|
|
]])
|
|
end)
|
|
|
|
it('three clicks will select the line and enter VISUAL LINE', function()
|
|
feed('<LeftMouse><2,2><LeftMouse><2,2><LeftMouse><2,2>')
|
|
screen:expect([[
|
|
testing |
|
|
mouse |
|
|
{1:su}^{1:port and selection } |
|
|
~ |
|
|
-- VISUAL LINE -- |
|
|
]])
|
|
end)
|
|
|
|
it('four clicks will enter VISUAL BLOCK', function()
|
|
feed('<LeftMouse><2,2><LeftMouse><2,2><LeftMouse><2,2><LeftMouse><2,2>')
|
|
screen:expect([[
|
|
testing |
|
|
mouse |
|
|
su^port and selection |
|
|
~ |
|
|
-- VISUAL BLOCK -- |
|
|
]])
|
|
end)
|
|
|
|
it('right click extends visual selection to the clicked location', function()
|
|
feed('<LeftMouse><0,0>')
|
|
screen:expect([[
|
|
^esting |
|
|
mouse |
|
|
support and selection |
|
|
~ |
|
|
|
|
|
]])
|
|
feed('<RightMouse><2,2>')
|
|
screen:expect([[
|
|
{1:testing } |
|
|
{1:mouse } |
|
|
{1:su}^port and selection |
|
|
~ |
|
|
-- VISUAL -- |
|
|
]])
|
|
end)
|
|
|
|
it('ctrl + left click will search for a tag', function()
|
|
nvim('set_option', 'tags', './non-existent-tags-file')
|
|
feed('<C-LeftMouse><0,0>')
|
|
screen:expect([[
|
|
E433: No tags file |
|
|
E426: tag not found: test|
|
|
ing |
|
|
Press ENTER or type comma|
|
|
nd to continue^ |
|
|
]])
|
|
feed('<cr>')
|
|
end)
|
|
|
|
it('mouse whell will target the hovered window', function()
|
|
feed('ggdG')
|
|
insert([[
|
|
Inserting
|
|
text
|
|
with
|
|
many
|
|
lines
|
|
to
|
|
test
|
|
mouse scrolling
|
|
]])
|
|
screen:try_resize(53, 14)
|
|
execute('sp', 'vsp')
|
|
screen:expect([[
|
|
lines |lines |
|
|
to |to |
|
|
test |test |
|
|
mouse scrolling |mouse scrolling |
|
|
^ | |
|
|
~ |~ |
|
|
[No Name] [+] [No Name] [+] |
|
|
to |
|
|
test |
|
|
mouse scrolling |
|
|
|
|
|
~ |
|
|
[No Name] [+] |
|
|
:vsp |
|
|
]])
|
|
feed('<MouseUp><0,0>')
|
|
screen:expect([[
|
|
mouse scrolling |lines |
|
|
^ |to |
|
|
~ |test |
|
|
~ |mouse scrolling |
|
|
~ | |
|
|
~ |~ |
|
|
[No Name] [+] [No Name] [+] |
|
|
to |
|
|
test |
|
|
mouse scrolling |
|
|
|
|
|
~ |
|
|
[No Name] [+] |
|
|
|
|
|
]])
|
|
feed('<MouseDown><27,0>')
|
|
screen:expect([[
|
|
mouse scrolling |text |
|
|
^ |with |
|
|
~ |many |
|
|
~ |lines |
|
|
~ |to |
|
|
~ |test |
|
|
[No Name] [+] [No Name] [+] |
|
|
to |
|
|
test |
|
|
mouse scrolling |
|
|
|
|
|
~ |
|
|
[No Name] [+] |
|
|
|
|
|
]])
|
|
feed('<MouseDown><27,7><MouseDown>')
|
|
screen:expect([[
|
|
mouse scrolling |text |
|
|
^ |with |
|
|
~ |many |
|
|
~ |lines |
|
|
~ |to |
|
|
~ |test |
|
|
[No Name] [+] [No Name] [+] |
|
|
Inserting |
|
|
text |
|
|
with |
|
|
many |
|
|
lines |
|
|
[No Name] [+] |
|
|
|
|
|
]])
|
|
end)
|
|
end)
|