mirror of
https://github.com/neovim/neovim.git
synced 2025-10-26 12:27:24 +00:00
ui: use an array for mode styles
This commit is contained in:
@@ -18,155 +18,155 @@ describe('ui/cursor', function()
|
||||
end)
|
||||
|
||||
it("'guicursor' is published as a UI event", function()
|
||||
local expected_cursor_style = {
|
||||
cmdline_hover = {
|
||||
mode_idx = 9,
|
||||
mouse_shape = 0,
|
||||
short_name = 'e' },
|
||||
cmdline_insert = {
|
||||
mode_idx = 5,
|
||||
blinkoff = 250,
|
||||
blinkon = 400,
|
||||
blinkwait = 700,
|
||||
cell_percentage = 25,
|
||||
cursor_shape = 'vertical',
|
||||
hl_id = 46,
|
||||
id_lm = 47,
|
||||
mouse_shape = 0,
|
||||
short_name = 'ci' },
|
||||
cmdline_normal = {
|
||||
mode_idx = 4,
|
||||
local expected_mode_info = {
|
||||
[1] = {
|
||||
blinkoff = 250,
|
||||
blinkon = 400,
|
||||
blinkwait = 700,
|
||||
cell_percentage = 0,
|
||||
cursor_shape = 'block',
|
||||
name = 'normal',
|
||||
hl_id = 46,
|
||||
id_lm = 47,
|
||||
mouse_shape = 0,
|
||||
short_name = 'c' },
|
||||
cmdline_replace = {
|
||||
mode_idx = 6,
|
||||
short_name = 'n' },
|
||||
[2] = {
|
||||
blinkoff = 250,
|
||||
blinkon = 400,
|
||||
blinkwait = 700,
|
||||
cell_percentage = 0,
|
||||
cursor_shape = 'block',
|
||||
name = 'visual',
|
||||
hl_id = 46,
|
||||
id_lm = 47,
|
||||
mouse_shape = 0,
|
||||
short_name = 'v' },
|
||||
[3] = {
|
||||
blinkoff = 250,
|
||||
blinkon = 400,
|
||||
blinkwait = 700,
|
||||
cell_percentage = 25,
|
||||
cursor_shape = 'vertical',
|
||||
name = 'insert',
|
||||
hl_id = 46,
|
||||
id_lm = 47,
|
||||
mouse_shape = 0,
|
||||
short_name = 'i' },
|
||||
[4] = {
|
||||
blinkoff = 250,
|
||||
blinkon = 400,
|
||||
blinkwait = 700,
|
||||
cell_percentage = 20,
|
||||
cursor_shape = 'horizontal',
|
||||
name = 'replace',
|
||||
hl_id = 46,
|
||||
id_lm = 47,
|
||||
mouse_shape = 0,
|
||||
short_name = 'cr' },
|
||||
insert = {
|
||||
mode_idx = 2,
|
||||
blinkoff = 250,
|
||||
blinkon = 400,
|
||||
blinkwait = 700,
|
||||
cell_percentage = 25,
|
||||
cursor_shape = 'vertical',
|
||||
hl_id = 46,
|
||||
id_lm = 47,
|
||||
mouse_shape = 0,
|
||||
short_name = 'i' },
|
||||
more = {
|
||||
mode_idx = 14,
|
||||
mouse_shape = 0,
|
||||
short_name = 'm' },
|
||||
more_lastline = {
|
||||
mode_idx = 15,
|
||||
mouse_shape = 0,
|
||||
short_name = 'ml' },
|
||||
normal = {
|
||||
mode_idx = 0,
|
||||
short_name = 'r' },
|
||||
[5] = {
|
||||
blinkoff = 250,
|
||||
blinkon = 400,
|
||||
blinkwait = 700,
|
||||
cell_percentage = 0,
|
||||
cursor_shape = 'block',
|
||||
name = 'cmdline_normal',
|
||||
hl_id = 46,
|
||||
id_lm = 47,
|
||||
mouse_shape = 0,
|
||||
short_name = 'n' },
|
||||
operator = {
|
||||
mode_idx = 7,
|
||||
short_name = 'c' },
|
||||
[6] = {
|
||||
blinkoff = 250,
|
||||
blinkon = 400,
|
||||
blinkwait = 700,
|
||||
cell_percentage = 25,
|
||||
cursor_shape = 'vertical',
|
||||
name = 'cmdline_insert',
|
||||
hl_id = 46,
|
||||
id_lm = 47,
|
||||
mouse_shape = 0,
|
||||
short_name = 'ci' },
|
||||
[7] = {
|
||||
blinkoff = 250,
|
||||
blinkon = 400,
|
||||
blinkwait = 700,
|
||||
cell_percentage = 20,
|
||||
cursor_shape = 'horizontal',
|
||||
name = 'cmdline_replace',
|
||||
hl_id = 46,
|
||||
id_lm = 47,
|
||||
mouse_shape = 0,
|
||||
short_name = 'cr' },
|
||||
[8] = {
|
||||
blinkoff = 250,
|
||||
blinkon = 400,
|
||||
blinkwait = 700,
|
||||
cell_percentage = 50,
|
||||
cursor_shape = 'horizontal',
|
||||
name = 'operator',
|
||||
hl_id = 46,
|
||||
id_lm = 46,
|
||||
mouse_shape = 0,
|
||||
short_name = 'o' },
|
||||
replace = {
|
||||
mode_idx = 3,
|
||||
blinkoff = 250,
|
||||
blinkon = 400,
|
||||
blinkwait = 700,
|
||||
cell_percentage = 20,
|
||||
cursor_shape = 'horizontal',
|
||||
hl_id = 46,
|
||||
id_lm = 47,
|
||||
mouse_shape = 0,
|
||||
short_name = 'r' },
|
||||
showmatch = {
|
||||
mode_idx = 16,
|
||||
blinkoff = 150,
|
||||
blinkon = 175,
|
||||
blinkwait = 175,
|
||||
cell_percentage = 0,
|
||||
cursor_shape = 'block',
|
||||
hl_id = 46,
|
||||
id_lm = 46,
|
||||
short_name = 'sm' },
|
||||
statusline_drag = {
|
||||
mode_idx = 11,
|
||||
mouse_shape = 0,
|
||||
short_name = 'sd' },
|
||||
statusline_hover = {
|
||||
mode_idx = 10,
|
||||
mouse_shape = 0,
|
||||
short_name = 's' },
|
||||
visual = {
|
||||
mode_idx = 1,
|
||||
blinkoff = 250,
|
||||
blinkon = 400,
|
||||
blinkwait = 700,
|
||||
cell_percentage = 0,
|
||||
cursor_shape = 'block',
|
||||
hl_id = 46,
|
||||
id_lm = 47,
|
||||
mouse_shape = 0,
|
||||
short_name = 'v' },
|
||||
visual_select = {
|
||||
mode_idx = 8,
|
||||
[9] = {
|
||||
blinkoff = 250,
|
||||
blinkon = 400,
|
||||
blinkwait = 700,
|
||||
cell_percentage = 35,
|
||||
cursor_shape = 'vertical',
|
||||
name = 'visual_select',
|
||||
hl_id = 46,
|
||||
id_lm = 46,
|
||||
mouse_shape = 0,
|
||||
short_name = 've' },
|
||||
vsep_drag = {
|
||||
mode_idx = 13,
|
||||
[10] = {
|
||||
name = 'cmdline_hover',
|
||||
mouse_shape = 0,
|
||||
short_name = 'e' },
|
||||
[11] = {
|
||||
name = 'statusline_hover',
|
||||
mouse_shape = 0,
|
||||
short_name = 's' },
|
||||
[12] = {
|
||||
name = 'statusline_drag',
|
||||
mouse_shape = 0,
|
||||
short_name = 'sd' },
|
||||
[13] = {
|
||||
name = 'vsep_hover',
|
||||
mouse_shape = 0,
|
||||
short_name = 'vs' },
|
||||
[14] = {
|
||||
name = 'vsep_drag',
|
||||
mouse_shape = 0,
|
||||
short_name = 'vd' },
|
||||
vsep_hover = {
|
||||
mode_idx = 12,
|
||||
[15] = {
|
||||
name = 'more',
|
||||
mouse_shape = 0,
|
||||
short_name = 'vs' }
|
||||
}
|
||||
short_name = 'm' },
|
||||
[16] = {
|
||||
name = 'more_lastline',
|
||||
mouse_shape = 0,
|
||||
short_name = 'ml' },
|
||||
[17] = {
|
||||
blinkoff = 150,
|
||||
blinkon = 175,
|
||||
blinkwait = 175,
|
||||
cell_percentage = 0,
|
||||
cursor_shape = 'block',
|
||||
name = 'showmatch',
|
||||
hl_id = 46,
|
||||
id_lm = 46,
|
||||
short_name = 'sm' },
|
||||
}
|
||||
|
||||
screen:expect(function()
|
||||
-- Default 'guicursor' published on startup.
|
||||
eq(expected_cursor_style, screen._cursor_style)
|
||||
eq(expected_mode_info, screen._mode_info)
|
||||
eq(true, screen._cursor_style_enabled)
|
||||
eq('normal', screen.mode)
|
||||
end)
|
||||
|
||||
-- Event is published ONLY if the cursor style changed.
|
||||
screen._cursor_style = nil
|
||||
screen._mode_info = nil
|
||||
command("echo 'test'")
|
||||
screen:expect([[
|
||||
^ |
|
||||
@@ -175,20 +175,24 @@ describe('ui/cursor', function()
|
||||
~ |
|
||||
test |
|
||||
]], nil, nil, function()
|
||||
eq(nil, screen._cursor_style)
|
||||
eq(nil, screen._mode_info)
|
||||
end)
|
||||
|
||||
-- Change the cursor style.
|
||||
meths.set_option('guicursor', 'n-v-c:ver35-blinkwait171-blinkoff172-blinkon173,ve:hor35,o:ver50,i-ci:block,r-cr:hor90,sm:ver42')
|
||||
screen:expect(function()
|
||||
eq('vertical', screen._cursor_style.normal.cursor_shape)
|
||||
eq('horizontal', screen._cursor_style.visual_select.cursor_shape)
|
||||
eq('vertical', screen._cursor_style.operator.cursor_shape)
|
||||
eq('block', screen._cursor_style.insert.cursor_shape)
|
||||
eq('vertical', screen._cursor_style.showmatch.cursor_shape)
|
||||
eq(171, screen._cursor_style.normal.blinkwait)
|
||||
eq(172, screen._cursor_style.normal.blinkoff)
|
||||
eq(173, screen._cursor_style.normal.blinkon)
|
||||
local named = {}
|
||||
for _, m in ipairs(screen._mode_info) do
|
||||
named[m.name] = m
|
||||
end
|
||||
eq('vertical', named.normal.cursor_shape)
|
||||
eq('horizontal', named.visual_select.cursor_shape)
|
||||
eq('vertical', named.operator.cursor_shape)
|
||||
eq('block', named.insert.cursor_shape)
|
||||
eq('vertical', named.showmatch.cursor_shape)
|
||||
eq(171, named.normal.blinkwait)
|
||||
eq(172, named.normal.blinkoff)
|
||||
eq(173, named.normal.blinkon)
|
||||
end)
|
||||
end)
|
||||
|
||||
@@ -197,11 +201,11 @@ describe('ui/cursor', function()
|
||||
screen:expect(function()
|
||||
-- Empty 'guicursor' sets enabled=false.
|
||||
eq(false, screen._cursor_style_enabled)
|
||||
for _, m in ipairs({ 'cmdline_insert', 'cmdline_normal', 'cmdline_replace', 'insert',
|
||||
'showmatch', 'normal', 'replace', 'visual',
|
||||
'visual_select', }) do
|
||||
eq('block', screen._cursor_style[m].cursor_shape)
|
||||
eq(0, screen._cursor_style[m].blinkon)
|
||||
for _, m in ipairs(screen._mode_info) do
|
||||
if m['cursor_shape'] ~= nil then
|
||||
eq('block', m.cursor_shape)
|
||||
eq(0, m.blinkon)
|
||||
end
|
||||
end
|
||||
end)
|
||||
end)
|
||||
|
||||
Reference in New Issue
Block a user