aboutsummaryrefslogtreecommitdiff
path: root/test/functional
diff options
context:
space:
mode:
Diffstat (limited to 'test/functional')
-rw-r--r--test/functional/ui/decorations_spec.lua20
-rw-r--r--test/functional/ui/highlight_spec.lua123
-rw-r--r--test/functional/ui/inccommand_spec.lua2
3 files changed, 133 insertions, 12 deletions
diff --git a/test/functional/ui/decorations_spec.lua b/test/functional/ui/decorations_spec.lua
index a4c024b526..fd8a06d898 100644
--- a/test/functional/ui/decorations_spec.lua
+++ b/test/functional/ui/decorations_spec.lua
@@ -39,6 +39,7 @@ describe('decorations providers', function()
[16] = {special = Screen.colors.Red, undercurl = true},
[17] = {foreground = Screen.colors.Red},
[18] = {bold = true, foreground = Screen.colors.SeaGreen};
+ [19] = {bold = true};
}
end)
@@ -738,6 +739,25 @@ describe('decorations providers', function()
|
]]}
end)
+
+ it('is not invoked repeatedly in Visual mode with vim.schedule() #20235', function()
+ exec_lua([[_G.cnt = 0]])
+ setup_provider([[
+ function on_do(event, ...)
+ if event == 'win' then
+ vim.schedule(function() end)
+ _G.cnt = _G.cnt + 1
+ end
+ end
+ ]])
+ feed('v')
+ screen:expect([[
+ ^ |
+ {1:~ }|*6
+ {19:-- VISUAL --} |
+ ]])
+ eq(2, exec_lua([[return _G.cnt]]))
+ end)
end)
local example_text = [[
diff --git a/test/functional/ui/highlight_spec.lua b/test/functional/ui/highlight_spec.lua
index fc692f47bb..af6ae5bf46 100644
--- a/test/functional/ui/highlight_spec.lua
+++ b/test/functional/ui/highlight_spec.lua
@@ -313,35 +313,136 @@ end)
describe('highlight', function()
before_each(clear)
- it('visual', function()
- local screen = Screen.new(20, 4)
+ it('Visual', function()
+ local screen = Screen.new(45, 5)
screen:attach()
screen:set_default_attr_ids({
[1] = { background = Screen.colors.LightGrey },
[2] = { bold = true, foreground = Screen.colors.Blue1 },
[3] = { bold = true },
+ [4] = { reverse = true, bold = true },
+ [5] = { reverse = true },
+ [6] = { background = Screen.colors.Grey90 },
})
insert([[
line1 foo bar
+ abcdefghijklmnopqrs
+ ABCDEFGHIJKLMNOPQRS
]])
+ feed('gg')
+ command('vsplit')
-- Non-blinking block cursor: does NOT highlight char-at-cursor.
command('set guicursor=a:block-blinkon0')
- feed('gg$vhhh')
+ feed('V')
screen:expect([[
- line1 foo^ {1:bar} |
- |
- {2:~ }|
- {3:-- VISUAL --} |
+ {1: }^l{1:ine1 foo bar} │{1: line1 foo bar} |
+ abcdefghijklmnopqrs │abcdefghijklmnopqrs |
+ ABCDEFGHIJKLMNOPQRS │ABCDEFGHIJKLMNOPQRS |
+ {4:[No Name] [+] }{5:[No Name] [+] }|
+ {3:-- VISUAL LINE --} |
+ ]])
+
+ feed('<Esc>$vhhh')
+ screen:expect([[
+ line1 foo^ {1:bar} │ line1 foo{1: bar} |
+ abcdefghijklmnopqrs │abcdefghijklmnopqrs |
+ ABCDEFGHIJKLMNOPQRS │ABCDEFGHIJKLMNOPQRS |
+ {4:[No Name] [+] }{5:[No Name] [+] }|
+ {3:-- VISUAL --} |
]])
-- Vertical cursor: highlights char-at-cursor. #8983
command('set guicursor=a:block-blinkon175')
screen:expect([[
- line1 foo{1:^ bar} |
- |
- {2:~ }|
- {3:-- VISUAL --} |
+ line1 foo{1:^ bar} │ line1 foo{1: bar} |
+ abcdefghijklmnopqrs │abcdefghijklmnopqrs |
+ ABCDEFGHIJKLMNOPQRS │ABCDEFGHIJKLMNOPQRS |
+ {4:[No Name] [+] }{5:[No Name] [+] }|
+ {3:-- VISUAL --} |
+ ]])
+
+ command('set selection=exclusive')
+ screen:expect([[
+ line1 foo{1:^ ba}r │ line1 foo{1: ba}r |
+ abcdefghijklmnopqrs │abcdefghijklmnopqrs |
+ ABCDEFGHIJKLMNOPQRS │ABCDEFGHIJKLMNOPQRS |
+ {4:[No Name] [+] }{5:[No Name] [+] }|
+ {3:-- VISUAL --} |
+ ]])
+
+ feed('o')
+ screen:expect([[
+ line1 foo{1: ba}^r │ line1 foo{1: ba}r |
+ abcdefghijklmnopqrs │abcdefghijklmnopqrs |
+ ABCDEFGHIJKLMNOPQRS │ABCDEFGHIJKLMNOPQRS |
+ {4:[No Name] [+] }{5:[No Name] [+] }|
+ {3:-- VISUAL --} |
+ ]])
+
+ feed('V')
+ screen:expect([[
+ {1: line1 foo ba^r} │{1: line1 foo bar} |
+ abcdefghijklmnopqrs │abcdefghijklmnopqrs |
+ ABCDEFGHIJKLMNOPQRS │ABCDEFGHIJKLMNOPQRS |
+ {4:[No Name] [+] }{5:[No Name] [+] }|
+ {3:-- VISUAL LINE --} |
+ ]])
+
+ command('set cursorcolumn')
+ feed('<C-V>')
+ screen:expect([[
+ line1 foo{1: ba}^r │ line1 foo{1: ba}r |
+ abcdefghijklmn{6:o}pqrs │abcdefghijklmnopqrs |
+ ABCDEFGHIJKLMN{6:O}PQRS │ABCDEFGHIJKLMNOPQRS |
+ {4:[No Name] [+] }{5:[No Name] [+] }|
+ {3:-- VISUAL BLOCK --} |
+ ]])
+
+ command('set selection&')
+ screen:expect([[
+ line1 foo{1: ba^r} │ line1 foo{1: bar} |
+ abcdefghijklmn{6:o}pqrs │abcdefghijklmnopqrs |
+ ABCDEFGHIJKLMN{6:O}PQRS │ABCDEFGHIJKLMNOPQRS |
+ {4:[No Name] [+] }{5:[No Name] [+] }|
+ {3:-- VISUAL BLOCK --} |
+ ]])
+
+ feed('^')
+ screen:expect([[
+ {1:^line1 foo }bar │ {1:line1 foo }bar |
+ ab{6:c}defghijklmnopqrs │abcdefghijklmnopqrs |
+ AB{6:C}DEFGHIJKLMNOPQRS │ABCDEFGHIJKLMNOPQRS |
+ {4:[No Name] [+] }{5:[No Name] [+] }|
+ {3:-- VISUAL BLOCK --} |
+ ]])
+
+ feed('2j')
+ screen:expect([[
+ {1:line1 foo }bar │ {1:line1 foo }bar |
+ ab{1:cdefghijkl}mnopqrs │ab{1:cdefghijkl}mnopqrs |
+ AB{1:^CDEFGHIJKL}MNOPQRS │AB{1:CDEFGHIJKL}MNOPQRS |
+ {4:[No Name] [+] }{5:[No Name] [+] }|
+ {3:-- VISUAL BLOCK --} |
+ ]])
+
+ command('set nocursorcolumn')
+ feed('O')
+ screen:expect([[
+ {1:line1 foo }bar │ {1:line1 foo }bar |
+ ab{1:cdefghijkl}mnopqrs │ab{1:cdefghijkl}mnopqrs |
+ AB{1:CDEFGHIJK^L}MNOPQRS │AB{1:CDEFGHIJKL}MNOPQRS |
+ {4:[No Name] [+] }{5:[No Name] [+] }|
+ {3:-- VISUAL BLOCK --} |
+ ]])
+
+ command('set selection=exclusive')
+ screen:expect([[
+ {1:line1 foo} bar │ {1:line1 foo} bar |
+ ab{1:cdefghijk}lmnopqrs │ab{1:cdefghijk}lmnopqrs |
+ AB{1:CDEFGHIJK}^LMNOPQRS │AB{1:CDEFGHIJK}LMNOPQRS |
+ {4:[No Name] [+] }{5:[No Name] [+] }|
+ {3:-- VISUAL BLOCK --} |
]])
end)
diff --git a/test/functional/ui/inccommand_spec.lua b/test/functional/ui/inccommand_spec.lua
index 7e79479fc5..29c8c43ca1 100644
--- a/test/functional/ui/inccommand_spec.lua
+++ b/test/functional/ui/inccommand_spec.lua
@@ -1064,11 +1064,11 @@ describe(':substitute, inccommand=split', function()
feed(':%s/tw/X')
screen:expect([[
+ Inc substitution on |
BBo lines |
Inc substitution on |
{12:X}o lines |
Inc substitution on |
- {12:X}o lines |
{11:[No Name] [+] }|
|1001| {12:X}o lines |
|1003| {12:X}o lines |