adjust available preview width based on 'signcolumn' when using 'split'

main
bhagwan 2 years ago
parent b055007f56
commit f996eb249f

@ -91,6 +91,7 @@ end
local generate_layout = function(winopts)
local row, col = winopts.row, winopts.col
local height, width = winopts.height, winopts.width
local signcol_width = winopts.signcol_width or 0
local preview_pos = winopts.preview_pos
local preview_size = winopts.preview_size
local prev_row, prev_col = row+1, col+1
@ -140,21 +141,21 @@ local generate_layout = function(winopts)
prev_col = col - 1
if winopts.split then
prev_row = 1
prev_width = prev_width - 1
prev_width = prev_width - 1 - signcol_width
prev_height = prev_height - padding
if vert_split then
anchor = 'NW'
prev_col = 1
else
prev_col = col - 3
prev_col = col - 3 - signcol_width
end
end
else
anchor = 'NW'
if winopts.split then
prev_row = 1
prev_col = width + 4
prev_width = prev_width - 3
prev_col = width + 4 - signcol_width
prev_width = prev_width - 3 + signcol_width
prev_height = prev_height - padding
else
prev_col = col + width + 3
@ -403,11 +404,18 @@ end
function FzfWin:preview_layout()
if self.winopts.split and self.previewer_is_builtin then
local wininfo = fn.getwininfo(self.fzf_winid)[1]
-- unlike floating win popups split windows inherit the global
-- 'signcolumn' setting which affects the available width for fzf
-- 'generate_layout' will then use the sign column available width
-- to assure a perfect alignment of the builtin previewer window
-- and the dummy native fzf previewer window border underneath it
local signcol_width = vim.wo[self.fzf_winid].signcolumn == 'no' and 1 or 0
self.layout = generate_layout({
row = wininfo.winrow,
col = wininfo.wincol,
height = wininfo.height,
width = api.nvim_win_get_width(self.fzf_winid),
signcol_width = signcol_width,
preview_pos = self.winopts.preview_pos,
preview_size = self.winopts.preview_size,
split = self.winopts.split,

Loading…
Cancel
Save