From 08f0b037e0e0ab9a5f073fd6c2acf2c7e9678b82 Mon Sep 17 00:00:00 2001 From: Barrett Ruth Date: Sun, 15 Mar 2026 13:34:39 -0400 Subject: [PATCH] fix(compiler): preserve `viewer_open` when viewer process exits Problem: when `open` is a custom command like `sioyek --instance-name`, the process exits immediately after delegating to the running instance. The exit callback reset `viewer_open`, causing every recompile to reopen the viewer and toggle to reopen instead of stopping. Solution: stop clearing `viewer_open` in the `do_open` exit callback. The flag now persists for the watch session and is only reset by `stop_watching`. --- lua/preview/compiler.lua | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lua/preview/compiler.lua b/lua/preview/compiler.lua index c3ffbfa..85a72c1 100644 --- a/lua/preview/compiler.lua +++ b/lua/preview/compiler.lua @@ -135,9 +135,8 @@ local function do_open(bufnr, output_file, open_config) vim.schedule_wrap(function() local s = state[bufnr] if s and s.viewer == proc then - log.dbg('viewer exited for buffer %d, resetting viewer_open', bufnr) + log.dbg('viewer exited for buffer %d', bufnr) s.viewer = nil - s.viewer_open = nil else log.dbg('viewer exited for buffer %d (stale proc, ignoring)', bufnr) end