diff --git a/doc/guard.nvim.txt b/doc/guard.nvim.txt index 7bb4c79..c27c840 100644 --- a/doc/guard.nvim.txt +++ b/doc/guard.nvim.txt @@ -1,4 +1,4 @@ -*guard.nvim.txt* For NVIM v0.8.0 Last change: 2024 December 03 +*guard.nvim.txt* For NVIM v0.8.0 Last change: 2024 December 07 ============================================================================== Table of Contents *guard.nvim-table-of-contents* diff --git a/lua/guard/events.lua b/lua/guard/events.lua index 20ae9a9..25da79b 100644 --- a/lua/guard/events.lua +++ b/lua/guard/events.lua @@ -8,14 +8,7 @@ local M = {} M.group = api.nvim_create_augroup('Guard', { clear = true }) function M.try_attach_to_buf(buf) - if - #api.nvim_get_autocmds({ - group = M.group, - event = 'BufWritePre', - buffer = buf, - }) > 0 - then - -- already attached + if not util.check_should_attach(buf) then return end au('BufWritePre', { diff --git a/lua/guard/util.lua b/lua/guard/util.lua index bdb5e13..25ebebd 100644 --- a/lua/guard/util.lua +++ b/lua/guard/util.lua @@ -83,6 +83,7 @@ end --- @param filename string --- @return string|false local function exists(filename) + ---@diagnostic disable-next-line: undefined-field local stat = vim.uv.fs_stat(filename) return stat and stat.type or false end @@ -132,6 +133,7 @@ end ---@return string, string? function M.buf_get_info(buf) local fname = vim.fn.fnameescape(api.nvim_buf_get_name(buf)) + ---@diagnostic disable-next-line: undefined-field return fname, M.get_lsp_root() or vim.uv.cwd() end @@ -215,4 +217,16 @@ function M.eval(xs) end, xs) end +---@param buf number +---@return boolean +function M.check_should_attach(buf) + local bo = vim.bo[buf] + -- check if it's not attached already and has an underlying file + return #api.nvim_get_autocmds({ + group = M.group, + event = 'BufWritePre', + buffer = buf, + }) == 0 and bo.buftype ~= 'nofile' +end + return M