make the padding resize automatically

This commit is contained in:
2025-12-12 19:43:34 +01:00
parent 60030df642
commit b0a7975a23
+35 -15
View File
@@ -224,6 +224,24 @@ do
return ok return ok
end end
local function calculate_padding()
local screen_width = vim.o.columns
local padding = math.floor((screen_width / 2 - 84 / 2) + 0.5)
if padding <= 0 then
return
end
return padding
end
local function get_padding_window()
local windows = vim.api.nvim_list_wins()
for _, win in ipairs(windows) do
if is_padding_window(win) then
return win
end
end
return nil
end
local buf = _G[ID] local buf = _G[ID]
if buf == nil then if buf == nil then
@@ -251,31 +269,33 @@ do
vim.api.nvim_set_current_win(leftmost_win) vim.api.nvim_set_current_win(leftmost_win)
end end
end end
end end,
})
vim.api.nvim_create_autocmd('VimResized', {
callback = function()
local padding_window = get_padding_window()
if padding_window ~= nil then
local padding = calculate_padding()
if padding == nil then
vim.api.nvim_win_close(padding_window, true)
else
vim.api.nvim_win_set_width(padding_window, padding)
end
end
vim.cmd"wincmd ="
end,
}) })
vim.api.nvim_buf_set_var(buf, ID, true) vim.api.nvim_buf_set_var(buf, ID, true)
_G[ID] = buf _G[ID] = buf
end end
local function get_padding_window()
local windows = vim.api.nvim_list_wins()
for _, win in ipairs(windows) do
if is_padding_window(win) then
return win
end
end
return nil
end
vim.keymap.set('n', ',z', function() vim.keymap.set('n', ',z', function()
local padding_window = get_padding_window() local padding_window = get_padding_window()
if padding_window == nil then if padding_window == nil then
local screen_width = vim.o.columns local padding = calculate_padding()
local padding = math.floor((screen_width / 2 - 84 / 2) + 0.5) if padding == nil then
if padding <= 0 then
return return
end end
local win = vim.api.nvim_open_win(buf, false, { local win = vim.api.nvim_open_win(buf, false, {
split = 'left', split = 'left',
win = -1, win = -1,