adjust fzf win size when closing preview (issue #73)

main
bhagwan 3 years ago
parent fa6c80a8fa
commit 46f186c954

@ -409,10 +409,13 @@ end
function Previewer.toggle_hide()
if not _self then return end
local self = _self
self.hidden = not self.hidden
if self.win then
if self.win:validate_preview() then
self.win:close_preview()
self.win:redraw()
else
self.win:redraw()
self.win:redraw_preview()
self:display_last_entry()
end

@ -169,11 +169,6 @@ function FzfWin:reset_win_highlights(win, is_border)
hl = ("Normal:%s"):format(self.winopts.hl_border)
end
vim.api.nvim_win_set_option(win, 'winhighlight', hl)
--[[ if self.winopts.window_on_create then
utils.win_execute(win, function()
self.winopts.window_on_create()
end)
end ]]
end
function FzfWin:new(o)
@ -352,15 +347,14 @@ function FzfWin:redraw_preview()
return self.preview_winid, self.border_winid
end
function FzfWin:create()
-- save sending bufnr/winid
self.src_bufnr = vim.api.nvim_get_current_buf()
self.src_winid = vim.api.nvim_get_current_win()
if self.winopts.split then
vim.cmd(self.winopts.split)
self.fzf_bufnr = vim.api.nvim_get_current_buf()
self.fzf_winid = vim.api.nvim_get_current_win()
else
function FzfWin:validate()
return self.fzf_winid and self.fzf_winid > 0
and api.nvim_win_is_valid(self.fzf_winid)
end
function FzfWin:redraw()
if self.winopts.split then return end
local hidden = self._previewer and self._previewer.hidden
local relative = self.winopts.relative or 'editor'
local columns, lines = vim.o.columns, vim.o.lines
if relative == 'win' then
@ -368,7 +362,7 @@ function FzfWin:create()
end
local winopts = self.winopts
if self.layout then winopts = self.layout.fzf end
if self.layout and not hidden then winopts = self.layout.fzf end
local win_opts = {
width = winopts.width or math.min(columns - 4, math.max(80, columns - 20)),
height = winopts.height or math.min(lines - 4, math.max(20, lines - 10)),
@ -379,13 +373,31 @@ function FzfWin:create()
win_opts.row = winopts.row or math.floor(((lines - win_opts.height) / 2) - 1)
win_opts.col = winopts.col or math.floor((columns - win_opts.width) / 2)
self.fzf_bufnr = vim.api.nvim_create_buf(false, true)
self.fzf_winid = vim.api.nvim_open_win(self.fzf_bufnr, true, win_opts)
if self:validate() then
api.nvim_win_set_config(self.fzf_winid, win_opts)
else
self.fzf_bufnr = vim.api.nvim_create_buf(false, true)
self.fzf_winid = vim.api.nvim_open_win(self.fzf_bufnr, true, win_opts)
end
end
function FzfWin:create()
-- save sending bufnr/winid
self.src_bufnr = vim.api.nvim_get_current_buf()
self.src_winid = vim.api.nvim_get_current_win()
if self.winopts.split then
vim.cmd(self.winopts.split)
self.fzf_bufnr = vim.api.nvim_get_current_buf()
self.fzf_winid = vim.api.nvim_get_current_win()
else
-- draw the main window
self:redraw()
end
self:reset_win_highlights(self.fzf_winid)
if self.winopts.window_on_create then
if self.winopts.window_on_create and
type(self.winopts.window_on_create) == 'function' then
self.winopts.window_on_create()
end

Loading…
Cancel
Save