Some checks failed
Detach Plugins / check (FlyGrep.vim) (push) Has been cancelled
Detach Plugins / check (GitHub.vim) (push) Has been cancelled
Detach Plugins / check (JavaUnit.vim) (push) Has been cancelled
Detach Plugins / check (SourceCounter.vim) (push) Has been cancelled
Detach Plugins / check (cpicker.nvim) (push) Has been cancelled
Detach Plugins / check (dein-ui.vim) (push) Has been cancelled
Detach Plugins / check (git.vim) (push) Has been cancelled
Detach Plugins / check (iedit.vim) (push) Has been cancelled
Detach Plugins / check (scrollbar.vim) (push) Has been cancelled
Detach Plugins / check (vim-chat) (push) Has been cancelled
Detach Plugins / check (vim-cheat) (push) Has been cancelled
Detach Plugins / check (vim-todo) (push) Has been cancelled
Detach Plugins / check (xmake.vim) (push) Has been cancelled
test / Linux (nvim, nightly) (push) Has been cancelled
test / Linux (nvim, v0.3.8) (push) Has been cancelled
test / Linux (nvim, v0.4.0) (push) Has been cancelled
test / Linux (nvim, v0.4.2) (push) Has been cancelled
test / Linux (nvim, v0.4.3) (push) Has been cancelled
test / Linux (nvim, v0.4.4) (push) Has been cancelled
test / Linux (nvim, v0.5.0) (push) Has been cancelled
test / Linux (nvim, v0.5.1) (push) Has been cancelled
test / Linux (nvim, v0.6.0) (push) Has been cancelled
test / Linux (nvim, v0.6.1) (push) Has been cancelled
test / Linux (nvim, v0.7.0) (push) Has been cancelled
test / Linux (nvim, v0.7.2) (push) Has been cancelled
test / Linux (nvim, v0.8.0) (push) Has been cancelled
test / Linux (nvim, v0.8.1) (push) Has been cancelled
test / Linux (nvim, v0.8.2) (push) Has been cancelled
test / Linux (nvim, v0.8.3) (push) Has been cancelled
test / Linux (nvim, v0.9.0) (push) Has been cancelled
test / Linux (nvim, v0.9.1) (push) Has been cancelled
test / Linux (true, vim, v7.4.052) (push) Has been cancelled
test / Linux (true, vim, v7.4.1689) (push) Has been cancelled
test / Linux (true, vim, v7.4.629) (push) Has been cancelled
test / Linux (true, vim, v8.0.0027) (push) Has been cancelled
test / Linux (true, vim, v8.0.0183) (push) Has been cancelled
test / Linux (vim, nightly) (push) Has been cancelled
test / Linux (vim, v8.0.0184) (push) Has been cancelled
test / Linux (vim, v8.0.1453) (push) Has been cancelled
test / Linux (vim, v8.1.2269) (push) Has been cancelled
test / Linux (vim, v8.2.2434) (push) Has been cancelled
test / Linux (vim, v8.2.3995) (push) Has been cancelled
test / Windows (nvim, nightly) (push) Has been cancelled
test / Windows (nvim, v0.3.8) (push) Has been cancelled
test / Windows (nvim, v0.4.2) (push) Has been cancelled
test / Windows (nvim, v0.4.3) (push) Has been cancelled
test / Windows (nvim, v0.4.4) (push) Has been cancelled
test / Windows (nvim, v0.5.0) (push) Has been cancelled
test / Windows (nvim, v0.5.1) (push) Has been cancelled
test / Windows (nvim, v0.6.0) (push) Has been cancelled
test / Windows (nvim, v0.6.1) (push) Has been cancelled
test / Windows (nvim, v0.7.0) (push) Has been cancelled
test / Windows (nvim, v0.7.2) (push) Has been cancelled
test / Windows (nvim, v0.8.0) (push) Has been cancelled
test / Windows (nvim, v0.8.1) (push) Has been cancelled
test / Windows (nvim, v0.8.2) (push) Has been cancelled
test / Windows (nvim, v0.8.3) (push) Has been cancelled
test / Windows (nvim, v0.9.0) (push) Has been cancelled
test / Windows (nvim, v0.9.1) (push) Has been cancelled
test / Windows (vim, nightly) (push) Has been cancelled
test / Windows (vim, v7.4.1185) (push) Has been cancelled
test / Windows (vim, v7.4.1689) (push) Has been cancelled
test / Windows (vim, v8.0.0027) (push) Has been cancelled
test / Windows (vim, v8.0.1453) (push) Has been cancelled
test / Windows (vim, v8.1.2269) (push) Has been cancelled
test / Windows (vim, v8.2.2434) (push) Has been cancelled
test / Windows (vim, v8.2.3995) (push) Has been cancelled
docker / docker (push) Has been cancelled
mirror / check (coding) (push) Has been cancelled
mirror / check (gitee) (push) Has been cancelled
mirror / check (gitlab) (push) Has been cancelled
78 lines
1.6 KiB
Lua
78 lines
1.6 KiB
Lua
---@class cmp_dictionary.kit.App.Event
|
|
---@field private _events table<string, table>
|
|
local Event = {}
|
|
Event.__index = Event
|
|
|
|
---Create new Event.
|
|
function Event.new()
|
|
local self = setmetatable({}, Event)
|
|
self._events = {}
|
|
return self
|
|
end
|
|
|
|
---Register listener.
|
|
---@param name string
|
|
---@param listener function
|
|
---@return function
|
|
function Event:on(name, listener)
|
|
self._events[name] = self._events[name] or {}
|
|
table.insert(self._events[name], listener)
|
|
return function()
|
|
self:off(name, listener)
|
|
end
|
|
end
|
|
|
|
---Register once listener.
|
|
---@param name string
|
|
---@param listener function
|
|
function Event:once(name, listener)
|
|
local off
|
|
off = self:on(name, function(...)
|
|
listener(...)
|
|
off()
|
|
end)
|
|
end
|
|
|
|
---Off specified listener from event.
|
|
---@param name string
|
|
---@param listener function
|
|
function Event:off(name, listener)
|
|
self._events[name] = self._events[name] or {}
|
|
if not listener then
|
|
self._events[name] = nil
|
|
else
|
|
for i = #self._events[name], 1, -1 do
|
|
if self._events[name][i] == listener then
|
|
table.remove(self._events[name], i)
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
---Return if the listener is registered.
|
|
---@param name string
|
|
---@param listener? function
|
|
---@return boolean
|
|
function Event:has(name, listener)
|
|
self._events[name] = self._events[name] or {}
|
|
for _, v in ipairs(self._events[name]) do
|
|
if v == listener then
|
|
return true
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
|
|
---Emit event.
|
|
---@param name string
|
|
---@vararg any
|
|
function Event:emit(name, ...)
|
|
self._events[name] = self._events[name] or {}
|
|
for _, v in ipairs(self._events[name]) do
|
|
v(...)
|
|
end
|
|
end
|
|
|
|
return Event
|