diff --git a/lua/preview/commands.lua b/lua/preview/commands.lua index 97a13f7..a2e0470 100644 --- a/lua/preview/commands.lua +++ b/lua/preview/commands.lua @@ -57,12 +57,6 @@ function M.setup() end, desc = 'Toggle, compile, clean, open, or check status of document preview', }) - - vim.api.nvim_create_autocmd('VimLeavePre', { - callback = function() - require('preview.compiler').stop_all() - end, - }) end return M diff --git a/lua/preview/compiler.lua b/lua/preview/compiler.lua index 74d6070..4c78574 100644 --- a/lua/preview/compiler.lua +++ b/lua/preview/compiler.lua @@ -58,14 +58,6 @@ end function M.compile(bufnr, name, provider, ctx, opts) opts = opts or {} - if vim.fn.executable(provider.cmd[1]) ~= 1 then - vim.notify( - '[preview.nvim]: "' .. provider.cmd[1] .. '" is not executable (run :checkhealth preview)', - vim.log.levels.ERROR - ) - return - end - if vim.bo[bufnr].modified then vim.cmd('silent! update') end @@ -178,7 +170,7 @@ function M.compile(bufnr, name, provider, ctx, opts) active[bufnr] = { obj = obj, provider = name, output_file = output_file, is_reload = true } - vim.api.nvim_create_autocmd('BufUnload', { + vim.api.nvim_create_autocmd('BufWipeout', { buffer = bufnr, once = true, callback = function() @@ -238,12 +230,7 @@ function M.compile(bufnr, name, provider, ctx, opts) r.inject(output_file) r.broadcast() end - if - provider.open - and not opened[bufnr] - and output_file ~= '' - and vim.uv.fs_stat(output_file) - then + if provider.open and not opened[bufnr] and output_file ~= '' then if provider.open == true then vim.ui.open(output_file) elseif type(provider.open) == 'table' then @@ -292,7 +279,7 @@ function M.compile(bufnr, name, provider, ctx, opts) active[bufnr] = { obj = obj, provider = name, output_file = output_file } - vim.api.nvim_create_autocmd('BufUnload', { + vim.api.nvim_create_autocmd('BufWipeout', { buffer = bufnr, once = true, callback = function() @@ -387,7 +374,7 @@ function M.toggle(bufnr, name, provider, ctx_builder) log.dbg('watching buffer %d with provider "%s"', bufnr, name) vim.notify('[preview.nvim]: watching with "' .. name .. '"', vim.log.levels.INFO) - vim.api.nvim_create_autocmd('BufUnload', { + vim.api.nvim_create_autocmd('BufWipeout', { buffer = bufnr, once = true, callback = function() @@ -465,10 +452,6 @@ function M.open(bufnr, open_config) log.dbg('no last output file for buffer %d', bufnr) return false end - if not vim.uv.fs_stat(output) then - log.dbg('output file no longer exists for buffer %d: %s', bufnr, output) - return false - end if type(open_config) == 'table' then local open_cmd = vim.list_extend({}, open_config) table.insert(open_cmd, output) diff --git a/lua/preview/init.lua b/lua/preview/init.lua index fd54d71..421ba65 100644 --- a/lua/preview/init.lua +++ b/lua/preview/init.lua @@ -146,10 +146,6 @@ end ---@param bufnr? integer function M.compile(bufnr) bufnr = bufnr or vim.api.nvim_get_current_buf() - if vim.api.nvim_buf_get_name(bufnr) == '' then - vim.notify('[preview.nvim]: buffer has no file name', vim.log.levels.WARN) - return - end local name = M.resolve_provider(bufnr) if not name then vim.notify('[preview.nvim]: no provider configured for this filetype', vim.log.levels.WARN) @@ -169,10 +165,6 @@ end ---@param bufnr? integer function M.clean(bufnr) bufnr = bufnr or vim.api.nvim_get_current_buf() - if vim.api.nvim_buf_get_name(bufnr) == '' then - vim.notify('[preview.nvim]: buffer has no file name', vim.log.levels.WARN) - return - end local name = M.resolve_provider(bufnr) if not name then vim.notify('[preview.nvim]: no provider configured for this filetype', vim.log.levels.WARN) @@ -186,10 +178,6 @@ end ---@param bufnr? integer function M.toggle(bufnr) bufnr = bufnr or vim.api.nvim_get_current_buf() - if vim.api.nvim_buf_get_name(bufnr) == '' then - vim.notify('[preview.nvim]: buffer has no file name', vim.log.levels.WARN) - return - end local name = M.resolve_provider(bufnr) if not name then vim.notify('[preview.nvim]: no provider configured for this filetype', vim.log.levels.WARN) @@ -202,10 +190,6 @@ end ---@param bufnr? integer function M.open(bufnr) bufnr = bufnr or vim.api.nvim_get_current_buf() - if vim.api.nvim_buf_get_name(bufnr) == '' then - vim.notify('[preview.nvim]: buffer has no file name', vim.log.levels.WARN) - return - end local name = M.resolve_provider(bufnr) local open_config = name and config.providers[name] and config.providers[name].open if not compiler.open(bufnr, open_config) then diff --git a/spec/commands_spec.lua b/spec/commands_spec.lua index 4e12e5d..5cca5a2 100644 --- a/spec/commands_spec.lua +++ b/spec/commands_spec.lua @@ -11,19 +11,6 @@ describe('commands', function() local cmds = vim.api.nvim_get_commands({}) assert.is_not_nil(cmds.Preview) end) - - it('registers VimLeavePre autocmd', function() - require('preview.commands').setup() - local aus = vim.api.nvim_get_autocmds({ event = 'VimLeavePre' }) - local found = false - for _, au in ipairs(aus) do - if au.callback then - found = true - break - end - end - assert.is_true(found) - end) end) describe('dispatch', function() diff --git a/spec/compiler_spec.lua b/spec/compiler_spec.lua index cd1dd9f..2189347 100644 --- a/spec/compiler_spec.lua +++ b/spec/compiler_spec.lua @@ -99,35 +99,6 @@ describe('compiler', function() helpers.delete_buffer(bufnr) end) - it('notifies and returns when binary is not executable', function() - local bufnr = helpers.create_buffer({ 'hello' }, 'text') - vim.api.nvim_buf_set_name(bufnr, '/tmp/preview_test_nobin.txt') - vim.bo[bufnr].modified = false - - local notified = false - local orig = vim.notify - vim.notify = function(msg) - if msg:find('not executable') then - notified = true - end - end - - local provider = { cmd = { 'totally_nonexistent_binary_xyz_preview' } } - local ctx = { - bufnr = bufnr, - file = '/tmp/preview_test_nobin.txt', - root = '/tmp', - ft = 'text', - } - - compiler.compile(bufnr, 'nobin', provider, ctx) - vim.notify = orig - - assert.is_true(notified) - assert.is_nil(compiler._test.active[bufnr]) - helpers.delete_buffer(bufnr) - end) - it('fires PreviewCompileFailed on non-zero exit', function() local bufnr = helpers.create_buffer({ 'hello' }, 'text') vim.api.nvim_buf_set_name(bufnr, '/tmp/preview_test_fail.txt') diff --git a/spec/init_spec.lua b/spec/init_spec.lua index f68438c..5c49276 100644 --- a/spec/init_spec.lua +++ b/spec/init_spec.lua @@ -108,62 +108,4 @@ describe('preview', function() helpers.delete_buffer(bufnr) end) end) - - describe('unnamed buffer guard', function() - before_each(function() - helpers.reset_config({ typst = true }) - preview = require('preview') - end) - - local function capture_notify(fn) - local msg = nil - local orig = vim.notify - vim.notify = function(m) - msg = m - end - fn() - vim.notify = orig - return msg - end - - it('compile warns on unnamed buffer', function() - local bufnr = helpers.create_buffer({}, 'typst') - local msg = capture_notify(function() - preview.compile(bufnr) - end) - assert.is_not_nil(msg) - assert.is_truthy(msg:find('no file name')) - helpers.delete_buffer(bufnr) - end) - - it('toggle warns on unnamed buffer', function() - local bufnr = helpers.create_buffer({}, 'typst') - local msg = capture_notify(function() - preview.toggle(bufnr) - end) - assert.is_not_nil(msg) - assert.is_truthy(msg:find('no file name')) - helpers.delete_buffer(bufnr) - end) - - it('clean warns on unnamed buffer', function() - local bufnr = helpers.create_buffer({}, 'typst') - local msg = capture_notify(function() - preview.clean(bufnr) - end) - assert.is_not_nil(msg) - assert.is_truthy(msg:find('no file name')) - helpers.delete_buffer(bufnr) - end) - - it('open warns on unnamed buffer', function() - local bufnr = helpers.create_buffer({}, 'typst') - local msg = capture_notify(function() - preview.open(bufnr) - end) - assert.is_not_nil(msg) - assert.is_truthy(msg:find('no file name')) - helpers.delete_buffer(bufnr) - end) - end) end)