39 lines
1.1 KiB
Lua
39 lines
1.1 KiB
Lua
-- https://github.com/echasnovski/mini.misc/blob/main/lua/mini/misc.lua#L838
|
|
|
|
---@type integer?
|
|
local zoom_winid = nil
|
|
|
|
local function zoom()
|
|
if zoom_winid and vim.api.nvim_win_is_valid(zoom_winid) then
|
|
vim.api.nvim_win_close(zoom_winid, true)
|
|
zoom_winid = nil
|
|
return
|
|
end
|
|
local cfg = {
|
|
relative = 'editor',
|
|
row = 0,
|
|
col = 0,
|
|
width = vim.o.columns,
|
|
height = vim.o.lines - vim.o.cmdheight,
|
|
border = 'none',
|
|
}
|
|
zoom_winid = vim.api.nvim_open_win(0, true, cfg)
|
|
vim.cmd.normal('zz', { bang = true })
|
|
vim.api.nvim_create_autocmd('VimResized', {
|
|
group = vim.api.nvim_create_augroup('Zoom', { clear = true }),
|
|
callback = function()
|
|
if not (zoom_winid and vim.api.nvim_win_is_valid(zoom_winid)) then
|
|
return
|
|
end
|
|
vim.api.nvim_win_set_config(zoom_winid, {
|
|
relative = 'editor',
|
|
row = 0,
|
|
col = 0,
|
|
width = vim.o.columns,
|
|
height = vim.o.lines - vim.o.cmdheight,
|
|
})
|
|
end,
|
|
})
|
|
end
|
|
|
|
vim.keymap.set('n', '<c-w>m', zoom)
|