mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
screen.lua: remove screen:_on_event #11488
Tests can redefine the handlers, so we don't need this extra hook.
This commit is contained in:
parent
bff42cd7b3
commit
a17ccb0d24
@ -3,7 +3,10 @@
|
|||||||
|
|
||||||
local helpers = require('test.functional.helpers')(after_each)
|
local helpers = require('test.functional.helpers')(after_each)
|
||||||
local Screen = require('test.functional.ui.screen')
|
local Screen = require('test.functional.ui.screen')
|
||||||
local clear, feed = helpers.clear, helpers.feed
|
local clear = helpers.clear
|
||||||
|
local command = helpers.command
|
||||||
|
local eq = helpers.eq
|
||||||
|
local feed = helpers.feed
|
||||||
|
|
||||||
describe('example', function()
|
describe('example', function()
|
||||||
local screen
|
local screen
|
||||||
@ -33,4 +36,37 @@ describe('example', function()
|
|||||||
|
|
|
|
||||||
]])
|
]])
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
it('override UI event-handler', function()
|
||||||
|
-- Example: override the "tabline_update" UI event handler.
|
||||||
|
--
|
||||||
|
-- screen.lua defines default handlers for UI events, but tests
|
||||||
|
-- may sometimes want to override a handler.
|
||||||
|
|
||||||
|
-- The UI must declare that it wants to handle the UI events.
|
||||||
|
-- For this example, we enable `ext_tabline`:
|
||||||
|
screen:detach()
|
||||||
|
screen = Screen.new(25, 5)
|
||||||
|
screen:attach({rgb=true, ext_tabline=true})
|
||||||
|
|
||||||
|
-- From ":help ui" we find that `tabline_update` receives `curtab` and
|
||||||
|
-- `tabs` objects. So we declare the UI handler like this:
|
||||||
|
local event_tabs, event_curtab
|
||||||
|
function screen:_handle_tabline_update(curtab, tabs)
|
||||||
|
event_curtab, event_tabs = curtab, tabs
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Create a tabpage...
|
||||||
|
command('tabedit foo')
|
||||||
|
|
||||||
|
-- Use screen:expect{condition=…} to check the result.
|
||||||
|
screen:expect{condition=function()
|
||||||
|
eq({ id = 2 }, event_curtab)
|
||||||
|
eq({
|
||||||
|
{tab = { id = 1 }, name = '[No Name]'},
|
||||||
|
{tab = { id = 2 }, name = 'foo'},
|
||||||
|
},
|
||||||
|
event_tabs)
|
||||||
|
end}
|
||||||
|
end)
|
||||||
end)
|
end)
|
||||||
|
@ -606,17 +606,12 @@ function Screen:_redraw(updates)
|
|||||||
for i = 2, #update do
|
for i = 2, #update do
|
||||||
local handler_name = '_handle_'..method
|
local handler_name = '_handle_'..method
|
||||||
local handler = self[handler_name]
|
local handler = self[handler_name]
|
||||||
if handler ~= nil then
|
assert(handler ~= nil, "missing handler: Screen:"..handler_name)
|
||||||
local status, res = pcall(handler, self, unpack(update[i]))
|
local status, res = pcall(handler, self, unpack(update[i]))
|
||||||
if not status then
|
if not status then
|
||||||
error(handler_name..' failed'
|
error(handler_name..' failed'
|
||||||
..'\n payload: '..inspect(update)
|
..'\n payload: '..inspect(update)
|
||||||
..'\n error: '..tostring(res))
|
..'\n error: '..tostring(res))
|
||||||
end
|
|
||||||
else
|
|
||||||
assert(self._on_event,
|
|
||||||
"Add Screen:"..handler_name.." or call Screen:set_on_event_handler")
|
|
||||||
self._on_event(method, update[i])
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if k == #updates and method == "flush" then
|
if k == #updates and method == "flush" then
|
||||||
@ -626,10 +621,6 @@ function Screen:_redraw(updates)
|
|||||||
return did_flush
|
return did_flush
|
||||||
end
|
end
|
||||||
|
|
||||||
function Screen:set_on_event_handler(callback)
|
|
||||||
self._on_event = callback
|
|
||||||
end
|
|
||||||
|
|
||||||
function Screen:_handle_resize(width, height)
|
function Screen:_handle_resize(width, height)
|
||||||
self:_handle_grid_resize(1, width, height)
|
self:_handle_grid_resize(1, width, height)
|
||||||
self._scroll_region = {
|
self._scroll_region = {
|
||||||
|
@ -10,11 +10,9 @@ describe('ui/ext_tabline', function()
|
|||||||
clear()
|
clear()
|
||||||
screen = Screen.new(25, 5)
|
screen = Screen.new(25, 5)
|
||||||
screen:attach({rgb=true, ext_tabline=true})
|
screen:attach({rgb=true, ext_tabline=true})
|
||||||
screen:set_on_event_handler(function(name, data)
|
function screen:_handle_tabline_update(curtab, tabs)
|
||||||
if name == "tabline_update" then
|
event_curtab, event_tabs = curtab, tabs
|
||||||
event_curtab, event_tabs = unpack(data)
|
end
|
||||||
end
|
|
||||||
end)
|
|
||||||
end)
|
end)
|
||||||
|
|
||||||
it('publishes UI events', function()
|
it('publishes UI events', function()
|
||||||
|
Loading…
Reference in New Issue
Block a user