Refactor previewers (#345)
This commit is contained in:
55
lua/telescope/previewers/previewer.lua
Normal file
55
lua/telescope/previewers/previewer.lua
Normal file
@@ -0,0 +1,55 @@
|
||||
local Previewer = {}
|
||||
Previewer.__index = Previewer
|
||||
|
||||
function Previewer:new(opts)
|
||||
opts = opts or {}
|
||||
|
||||
return setmetatable({
|
||||
state = nil,
|
||||
_setup_func = opts.setup,
|
||||
_teardown_func = opts.teardown,
|
||||
_send_input = opts.send_input,
|
||||
_scroll_fn = opts.scroll_fn,
|
||||
preview_fn = opts.preview_fn,
|
||||
}, Previewer)
|
||||
end
|
||||
|
||||
function Previewer:preview(entry, status)
|
||||
if not entry then
|
||||
return
|
||||
end
|
||||
|
||||
if not self.state then
|
||||
if self._setup_func then
|
||||
self.state = self:_setup_func()
|
||||
else
|
||||
self.state = {}
|
||||
end
|
||||
end
|
||||
|
||||
return self:preview_fn(entry, status)
|
||||
end
|
||||
|
||||
function Previewer:teardown()
|
||||
if self._teardown_func then
|
||||
self:_teardown_func()
|
||||
end
|
||||
end
|
||||
|
||||
function Previewer:send_input(input)
|
||||
if self._send_input then
|
||||
self:_send_input(input)
|
||||
else
|
||||
vim.api.nvim_err_writeln("send_input is not defined for this previewer")
|
||||
end
|
||||
end
|
||||
|
||||
function Previewer:scroll_fn(direction)
|
||||
if self._scroll_fn then
|
||||
self:_scroll_fn(direction)
|
||||
else
|
||||
vim.api.nvim_err_writeln("scroll_fn is not defined for this previewer")
|
||||
end
|
||||
end
|
||||
|
||||
return Previewer
|
||||
Reference in New Issue
Block a user