aboutsummaryrefslogtreecommitdiff
path: root/test/functional/ui
diff options
context:
space:
mode:
authorbfredl <bjorn.linse@gmail.com>2023-03-09 11:06:47 +0100
committerGitHub <noreply@github.com>2023-03-09 11:06:47 +0100
commit46d4d420e56bb0b4aec696fd8164bffde02d2758 (patch)
tree0e52864f8126941b511d814aed554bed4cc1cd64 /test/functional/ui
parente17581fa5342c7396385456faa37e78105994ed2 (diff)
parentfe11079721084b3638ae3d8e5266f95d52028fb7 (diff)
downloadrneovim-46d4d420e56bb0b4aec696fd8164bffde02d2758.tar.gz
rneovim-46d4d420e56bb0b4aec696fd8164bffde02d2758.tar.bz2
rneovim-46d4d420e56bb0b4aec696fd8164bffde02d2758.zip
Merge pull request #22547 from luukvbaal/statusline
perf(statusline): UI elements are always redrawn on K_EVENT
Diffstat (limited to 'test/functional/ui')
-rw-r--r--test/functional/ui/statusline_spec.lua33
1 files changed, 33 insertions, 0 deletions
diff --git a/test/functional/ui/statusline_spec.lua b/test/functional/ui/statusline_spec.lua
index 1c184ff27d..c59ade0e31 100644
--- a/test/functional/ui/statusline_spec.lua
+++ b/test/functional/ui/statusline_spec.lua
@@ -10,6 +10,7 @@ local meths = helpers.meths
local exec = helpers.exec
local exec_lua = helpers.exec_lua
local eval = helpers.eval
+local sleep = helpers.sleep
describe('statusline clicks', function()
local screen
@@ -589,3 +590,35 @@ it('showcmdloc=statusline does not show if statusline is too narrow', function()
feed('1234')
screen:expect_unchanged()
end)
+
+it('K_EVENT does not trigger a statusline redraw unnecessarily', function()
+ clear()
+ local screen = Screen.new(40, 8)
+ screen:attach()
+ -- does not redraw on vim.schedule (#17937)
+ command([[
+ set laststatus=2
+ let g:counter = 0
+ func Status()
+ let g:counter += 1
+ lua vim.schedule(function() end)
+ return g:counter
+ endfunc
+ set statusline=%!Status()
+ ]])
+ sleep(50)
+ eq(1, eval('g:counter < 50'), 'g:counter=' .. eval('g:counter'))
+ -- also in insert mode
+ feed('i')
+ sleep(50)
+ eq(1, eval('g:counter < 50'), 'g:counter=' .. eval('g:counter'))
+ -- does not redraw on timer call (#14303)
+ command([[
+ let g:counter = 0
+ func Timer(timer)
+ endfunc
+ call timer_start(1, 'Timer', {'repeat': 100})
+ ]])
+ sleep(50)
+ eq(1, eval('g:counter < 50'), 'g:counter=' .. eval('g:counter'))
+end)