From 17f4f5cd6994bcc4f22c0ce54c6a3fe1ae271992 Mon Sep 17 00:00:00 2001 From: Ofir Gal Date: Fri, 19 Jan 2024 13:00:59 +0200 Subject: [PATCH 1/3] added executed usercommand on zoom closed --- lua/neo-zoom/utils/autocmd.lua | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lua/neo-zoom/utils/autocmd.lua b/lua/neo-zoom/utils/autocmd.lua index f876f38..4bf1cf5 100644 --- a/lua/neo-zoom/utils/autocmd.lua +++ b/lua/neo-zoom/utils/autocmd.lua @@ -13,6 +13,13 @@ local function detect_colon_q() local view = vim.fn.winsaveview() local buf_zoom = vim.api.nvim_get_current_buf() local win_enter = require('neo-zoom').zoom_book[vim.api.nvim_get_current_win()] + vim.api.nvim_exec_autocmds('User', { + pattern = 'NeoZoomClosed', + data = { + original_win = win_enter, + } + }) + require('neo-zoom').zoom_book[vim.api.nvim_get_current_win()] = nil -- this will be triggered right after `WinClosed`. vim.api.nvim_create_autocmd({ 'WinEnter' }, { From 06554678718d54ac64036e821afd12e35989fed5 Mon Sep 17 00:00:00 2001 From: Ofir Gal Date: Wed, 8 Apr 2026 21:07:02 +0300 Subject: [PATCH 2/3] add close callback --- lua/neo-zoom/init.lua | 3 +++ lua/neo-zoom/utils/autocmd.lua | 1 + 2 files changed, 4 insertions(+) diff --git a/lua/neo-zoom/init.lua b/lua/neo-zoom/init.lua index 3252330..908960d 100644 --- a/lua/neo-zoom/init.lua +++ b/lua/neo-zoom/init.lua @@ -85,6 +85,8 @@ function M.setup(opts) M.callbacks = opts.callbacks or {} if type(M.callbacks) ~= 'table' then M.callbacks = {} end U.table_add_values(M.callbacks, require('neo-zoom.presets.callbacks')) + M.close_callbacks = opts.close_callbacks or {} + if type(M.close_callbacks) ~= 'table' then M.close_callbacks = {} end update_internals() @@ -155,6 +157,7 @@ function M.neo_zoom(opts) end M.zoom_book[win_zoom or 0] = nil + U.run_callbacks(M.close_callbacks) return end diff --git a/lua/neo-zoom/utils/autocmd.lua b/lua/neo-zoom/utils/autocmd.lua index 4bf1cf5..25ad29e 100644 --- a/lua/neo-zoom/utils/autocmd.lua +++ b/lua/neo-zoom/utils/autocmd.lua @@ -21,6 +21,7 @@ local function detect_colon_q() }) require('neo-zoom').zoom_book[vim.api.nvim_get_current_win()] = nil + require('neo-zoom.utils').run_callbacks(require('neo-zoom').close_callbacks) -- this will be triggered right after `WinClosed`. vim.api.nvim_create_autocmd({ 'WinEnter' }, { group = 'NeoZoom.lua', From 9c9dbe774575e982b8515f3a1ccd8de1df7729f1 Mon Sep 17 00:00:00 2001 From: Ofir Gal Date: Wed, 8 Apr 2026 22:26:54 +0300 Subject: [PATCH 3/3] fix: skip fix_narrow_zoom_in_window callback in terminal mode Prevents "Can't re-enter normal mode from terminal mode" error when zooming a terminal buffer. Co-Authored-By: Claude Opus 4.6 --- lua/neo-zoom/presets/callbacks.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lua/neo-zoom/presets/callbacks.lua b/lua/neo-zoom/presets/callbacks.lua index 0cae658..aefea28 100644 --- a/lua/neo-zoom/presets/callbacks.lua +++ b/lua/neo-zoom/presets/callbacks.lua @@ -3,6 +3,8 @@ local M = {} function M.fix_narrow_zoom_in_window() -- see issue #73. + -- skip in terminal mode, as normal-mode commands can't be used there. + if vim.fn.mode() == 't' then return end local offset_right = 5 local rhs = vim.api.nvim_win_get_width(0) - vim.fn.wincol() - offset_right vim.cmd('normal! z' .. tostring(rhs) .. 'h')