mirror of
https://github.com/neovim/neovim
synced 2025-07-15 16:51:49 +00:00
test(ui/{cmdline,message}2_spec): reduce flakiness/runtime #34875
Problem: Storing the configured 'cmdheight' value is scheduled and may happen after cmdline2_spec already entered block_mode. Excessive wait time for expected screen state due to delayed ruler after an error message. Solution: Only schedule storing the user configured 'cmdheight' if v:vim_did_enter is unset. Use regular message instead of error.
This commit is contained in:
@ -104,9 +104,11 @@ function M.enable(opts)
|
|||||||
ext.cmdheight = value
|
ext.cmdheight = value
|
||||||
end
|
end
|
||||||
|
|
||||||
vim.schedule(function()
|
if vim.v.vim_did_enter == 0 then
|
||||||
check_cmdheight(vim.o.cmdheight)
|
vim.schedule(function()
|
||||||
end)
|
check_cmdheight(vim.o.cmdheight)
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
api.nvim_create_autocmd('OptionSet', {
|
api.nvim_create_autocmd('OptionSet', {
|
||||||
group = ext.augroup,
|
group = ext.augroup,
|
||||||
|
@ -465,7 +465,7 @@ function M.set_pos(type)
|
|||||||
local function win_set_pos(win)
|
local function win_set_pos(win)
|
||||||
local texth = type and api.nvim_win_text_height(win, {}) or {}
|
local texth = type and api.nvim_win_text_height(win, {}) or {}
|
||||||
local height = type and math.min(texth.all, math.ceil(o.lines * 0.5))
|
local height = type and math.min(texth.all, math.ceil(o.lines * 0.5))
|
||||||
local top = { vim.opt.fcs:get().horiz or o.ambw == 'single' and '─' or '-', 'WinSeparator' }
|
local top = { vim.opt.fcs:get().horiz or o.ambw == 'single' and '─' or '-', 'MsgSeparator' }
|
||||||
local border = win ~= ext.wins.msg and { '', top, '', '', '', '', '', '' } or nil
|
local border = win ~= ext.wins.msg and { '', top, '', '', '', '', '', '' } or nil
|
||||||
local save_config = type == 'cmd' and api.nvim_win_get_config(win) or {}
|
local save_config = type == 'cmd' and api.nvim_win_get_config(win) or {}
|
||||||
local config = {
|
local config = {
|
||||||
|
@ -4,7 +4,7 @@ local M = {
|
|||||||
cmd = nil, ---@type vim._extui.cmdline
|
cmd = nil, ---@type vim._extui.cmdline
|
||||||
ns = api.nvim_create_namespace('nvim._ext_ui'),
|
ns = api.nvim_create_namespace('nvim._ext_ui'),
|
||||||
augroup = api.nvim_create_augroup('nvim._ext_ui', {}),
|
augroup = api.nvim_create_augroup('nvim._ext_ui', {}),
|
||||||
cmdheight = 1, -- 'cmdheight' option value set by user.
|
cmdheight = vim.o.cmdheight, -- 'cmdheight' option value set by user.
|
||||||
wins = { cmd = -1, dialog = -1, msg = -1, pager = -1 },
|
wins = { cmd = -1, dialog = -1, msg = -1, pager = -1 },
|
||||||
bufs = { cmd = -1, dialog = -1, msg = -1, pager = -1 },
|
bufs = { cmd = -1, dialog = -1, msg = -1, pager = -1 },
|
||||||
cfg = {
|
cfg = {
|
||||||
|
@ -30,27 +30,17 @@ describe('messages2', function()
|
|||||||
screen:expect([[
|
screen:expect([[
|
||||||
|
|
|
|
||||||
{1:~ }|*9
|
{1:~ }|*9
|
||||||
─────────────────────────────────────────────────────|
|
{3:─────────────────────────────────────────────────────}|
|
||||||
fo^o |
|
fo^o |
|
||||||
bar |
|
bar |
|
||||||
1,3 All|
|
1,3 All|
|
||||||
]])
|
]])
|
||||||
-- New message clears spill indicator.
|
|
||||||
feed('Q')
|
|
||||||
screen:expect([[
|
|
||||||
|
|
|
||||||
{1:~ }|*9
|
|
||||||
─────────────────────────────────────────────────────|
|
|
||||||
fo^o |
|
|
||||||
bar |
|
|
||||||
{9:E354: Invalid register name: '^@'} 1,3 All|
|
|
||||||
]])
|
|
||||||
-- Multiple messages in same event loop iteration are appended and shown in full.
|
-- Multiple messages in same event loop iteration are appended and shown in full.
|
||||||
feed([[q:echo "foo" | echo "bar\nbaz\n"->repeat(&lines)<CR>]])
|
feed([[q:echo "foo" | echo "bar\nbaz\n"->repeat(&lines)<CR>]])
|
||||||
screen:expect([[
|
screen:expect([[
|
||||||
^ |
|
^ |
|
||||||
{1:~ }|*5
|
{1:~ }|*5
|
||||||
─────────────────────────────────────────────────────|
|
{3:─────────────────────────────────────────────────────}|
|
||||||
foo |
|
foo |
|
||||||
bar |
|
bar |
|
||||||
baz |
|
baz |
|
||||||
@ -66,13 +56,20 @@ describe('messages2', function()
|
|||||||
{1:~ }|*12
|
{1:~ }|*12
|
||||||
foo[+29] 0,0-1 All|
|
foo[+29] 0,0-1 All|
|
||||||
]])
|
]])
|
||||||
|
command('echo "foo"')
|
||||||
|
-- New message clears spill indicator.
|
||||||
|
screen:expect([[
|
||||||
|
^ |
|
||||||
|
{1:~ }|*12
|
||||||
|
foo 0,0-1 All|
|
||||||
|
]])
|
||||||
-- No error for ruler virt_text msg_row exceeding buffer length.
|
-- No error for ruler virt_text msg_row exceeding buffer length.
|
||||||
command([[map Q <cmd>echo "foo\nbar" <bar> ls<CR>]])
|
command([[map Q <cmd>echo "foo\nbar" <bar> ls<CR>]])
|
||||||
feed('Q')
|
feed('Q')
|
||||||
screen:expect([[
|
screen:expect([[
|
||||||
^ |
|
^ |
|
||||||
{1:~ }|*8
|
{1:~ }|*8
|
||||||
─────────────────────────────────────────────────────|
|
{3:─────────────────────────────────────────────────────}|
|
||||||
foo |
|
foo |
|
||||||
bar |
|
bar |
|
||||||
|
|
|
|
||||||
@ -104,7 +101,7 @@ describe('messages2', function()
|
|||||||
screen:expect([[
|
screen:expect([[
|
||||||
|
|
|
|
||||||
{1:~ }|*10
|
{1:~ }|*10
|
||||||
─────────────────────────────────────────────────────|
|
{3:─────────────────────────────────────────────────────}|
|
||||||
fo^o |
|
fo^o |
|
||||||
foo |
|
foo |
|
||||||
]])
|
]])
|
||||||
@ -182,7 +179,7 @@ describe('messages2', function()
|
|||||||
end)
|
end)
|
||||||
|
|
||||||
it("deleting buffer restores 'buftype'", function()
|
it("deleting buffer restores 'buftype'", function()
|
||||||
command('%bdelete')
|
feed(':%bdelete<CR>')
|
||||||
screen:expect([[
|
screen:expect([[
|
||||||
^ |
|
^ |
|
||||||
{1:~ }|*12
|
{1:~ }|*12
|
||||||
|
Reference in New Issue
Block a user