From e513fc57d17277fbeaae6f6791478af689554066 Mon Sep 17 00:00:00 2001 From: Barrett Ruth Date: Fri, 6 Mar 2026 14:25:53 -0500 Subject: [PATCH] feat(compiler): add compile start/complete notifications Problem: No user-facing feedback when compilation starts or finishes. Long-running compilers like pandoc with `--embed-resources` leave the user staring at nothing for 15+ seconds. Solution: Notify "compiling..." at compile start and "compilation complete" on success. The initial `toggle` call uses a combined "compiling with ..." message to avoid stacking two notifications. --- lua/preview/compiler.lua | 11 +++++++++-- spec/compiler_spec.lua | 10 ++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/lua/preview/compiler.lua b/lua/preview/compiler.lua index 5480d57..41eacf5 100644 --- a/lua/preview/compiler.lua +++ b/lua/preview/compiler.lua @@ -329,6 +329,9 @@ function M.compile(bufnr, name, provider, ctx, opts) s.provider = name s.is_reload = true + if not opts.silent then + vim.notify('[preview.nvim]: compiling...', vim.log.levels.INFO) + end vim.api.nvim_exec_autocmds('User', { pattern = 'PreviewCompileStarted', data = { bufnr = bufnr, provider = name }, @@ -360,6 +363,7 @@ function M.compile(bufnr, name, provider, ctx, opts) end if result.code == 0 then log.dbg('compilation succeeded for buffer %d', bufnr) + vim.notify('[preview.nvim]: compilation complete', vim.log.levels.INFO) clear_errors(bufnr, provider) vim.api.nvim_exec_autocmds('User', { pattern = 'PreviewCompileSuccess', @@ -403,6 +407,9 @@ function M.compile(bufnr, name, provider, ctx, opts) s.provider = name s.is_reload = false + if not opts.silent then + vim.notify('[preview.nvim]: compiling...', vim.log.levels.INFO) + end vim.api.nvim_exec_autocmds('User', { pattern = 'PreviewCompileStarted', data = { bufnr = bufnr, provider = name }, @@ -512,8 +519,8 @@ function M.toggle(bufnr, name, provider, ctx_builder) log.dbg('watching buffer %d with provider "%s"', bufnr, name) end - vim.notify('[preview.nvim]: watching with "' .. name .. '"', vim.log.levels.INFO) - M.compile(bufnr, name, provider, ctx_builder(bufnr)) + vim.notify('[preview.nvim]: compiling with "' .. name .. '"...', vim.log.levels.INFO) + M.compile(bufnr, name, provider, ctx_builder(bufnr), { silent = true }) end ---@param bufnr integer diff --git a/spec/compiler_spec.lua b/spec/compiler_spec.lua index 5b12cfb..b1fe0ee 100644 --- a/spec/compiler_spec.lua +++ b/spec/compiler_spec.lua @@ -55,6 +55,14 @@ describe('compiler', function() end, }) + local notified = false + local orig = vim.notify + vim.notify = function(msg) + if msg:find('compiling') then + notified = true + end + end + local provider = { cmd = { 'echo', 'ok' } } local ctx = { bufnr = bufnr, @@ -64,7 +72,9 @@ describe('compiler', function() } compiler.compile(bufnr, 'echo', provider, ctx) + vim.notify = orig assert.is_true(fired) + assert.is_true(notified) vim.wait(2000, function() return process_done(bufnr)