fix(compiler): check output exists before opening from long-running process (#24)

* fix(compiler): check output exists before opening from long-running process

Problem: for long-running processes (typst watch), M.compile() calls
the opener immediately after vim.system() returns, before the process
has produced any output. On first run the output file does not exist
yet, so the opener is called on a nonexistent path.

Solution: guard the open block with vim.uv.fs_stat so it only fires
if the output file already exists at spawn time.

* style(compiler): reformat long condition for stylua
This commit is contained in:
Barrett Ruth 2026-03-04 00:20:41 -05:00 committed by GitHub
parent 54ef0c3c99
commit da3e3e4249
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -147,7 +147,12 @@ function M.compile(bufnr, name, provider, ctx)
end)
)
if provider.open and not opened[bufnr] and output_file ~= '' then
if
provider.open
and not opened[bufnr]
and output_file ~= ''
and vim.uv.fs_stat(output_file)
then
if provider.open == true then
vim.ui.open(output_file)
elseif type(provider.open) == 'table' then