builtin previewer: misc config options added

main
bhagwan 3 years ago
parent 2315413bdd
commit e89018baf9

@ -257,8 +257,9 @@ require'fzf-lua'.setup {
scrollchar = '█', -- scrollbar character
wrap = false, -- wrap lines?
syntax = true, -- preview syntax highlight?
fullscreen = false, -- preview max size?
expand = false, -- preview max size?
hl_cursor = 'Cursor', -- cursor highlight
hl_cursorline = 'CursorLine', -- cursor line highlight
hl_range = 'IncSearch', -- ranger highlight (not yet in use)
keymap = {
toggle_full = '<F2>', -- toggle full screen

@ -109,8 +109,10 @@ M.globals = {
wrap = false,
syntax = true,
syntax_delay = 0,
fullscreen = false,
expand = false,
hidden = false,
hl_cursor = 'Cursor',
hl_cursorline = 'CursorLine',
hl_range = 'IncSearch',
keymap = {
toggle_full = '<F2>', -- toggle full screen

@ -53,10 +53,12 @@ function Previewer:new(o, opts, fzf_win)
if o.scrollchar then
self.win.winopts.scrollchar = o.scrollchar
end
self.fullscreen = o.fullscreen
self.expand = o.expand or o.fullscreen
self.hidden = o.hidden
self.syntax = o.syntax
self.syntax_delay = o.syntax_delay
self.hl_cursor = o.hl_cursor
self.hl_cursorline = o.hl_cursorline
self.hl_range = o.hl_range
self.keymap = o.keymap
self.backups = {}
@ -108,7 +110,9 @@ function Previewer:backup_winopts(key, win)
if not win or not api.nvim_win_is_valid(win) then return end
self.backups[key] = {}
for opt, _ in pairs(self:gen_winopts()) do
self.backups[key][opt] = api.nvim_win_get_option(win, opt)
if utils.nvim_has_option(opt) then
self.backups[key][opt] = api.nvim_win_get_option(win, opt)
end
end
end
@ -116,7 +120,9 @@ function Previewer:restore_winopts(key, win)
if not self.backups[key] then return end
if not win or not api.nvim_win_is_valid(win) then return end
for opt, v in pairs(self.backups[key]) do
api.nvim_win_set_option(win, opt, v)
if utils.nvim_has_option(opt) then
api.nvim_win_set_option(win, opt, v)
end
end
self.backups[key] = nil
end
@ -124,7 +130,9 @@ end
function Previewer:set_winopts(win)
if not win or not api.nvim_win_is_valid(win) then return end
for opt, v in pairs(self:gen_winopts()) do
api.nvim_win_set_option(win, opt, v)
if utils.nvim_has_option(opt) then
api.nvim_win_set_option(win, opt, v)
end
--[[ api.nvim_win_call(win, function()
api.nvim_win_set_option(0, opt, v)
end) ]]
@ -351,7 +359,7 @@ end
function Previewer.toggle_full()
if not _self then return end
local self = _self
self.fullscreen = not self.fullscreen
self.expand = not self.expand
if self.win and self.win:validate_preview() then
self.win:redraw_preview()
end

@ -29,6 +29,10 @@ function M.round(num, limit)
return math.floor(num)
end
function M.nvim_has_option(option)
return vim.fn.exists('&' .. option) == 1
end
function M._echo_multiline(msg)
for _, s in ipairs(vim.fn.split(msg, "\n")) do
vim.cmd("echom '" .. s:gsub("'", "''").."'")

@ -160,6 +160,9 @@ end
function FzfWin:reset_win_highlights(win, is_border)
local hl = ("Normal:%s,FloatBorder:%s"):format(
self.winopts.hl_normal, self.winopts.hl_border)
if self._previewer and self._previewer.hl_cursorline then
hl = hl .. (",CursorLine:%s"):format(self._previewer.hl_cursorline)
end
if is_border then
-- our border is manuually drawn so we need
-- to replace Normal with the border color
@ -322,10 +325,10 @@ function FzfWin:redraw_preview()
return -1, -1
end
-- fullscreen preview only if set by the previewer
if self._previewer and self._previewer.fullscreen then
-- expand preview only if set by the previewer
if self._previewer and self._previewer.expand then
self.prev_winopts, self.border_winopts =
self:fs_preview_layout(self._previewer.fullscreen)
self:fs_preview_layout(self._previewer.expand)
end
if self:validate_preview() then
@ -387,7 +390,8 @@ function FzfWin:create()
end
-- create or redraw the preview win
self:redraw_preview()
local hidden = self._previewer and self._previewer.hidden
if not hidden then self:redraw_preview() end
-- setup the keybinds for the builtin previewer
if self._previewer and self._previewer.setup_keybinds then

Loading…
Cancel
Save