feature: Add logger for debugging (#18)

This commit is contained in:
Toni Müller
2023-04-25 10:33:25 +02:00
committed by GitHub
parent 55e8731d53
commit 42d1342b9e
4 changed files with 58 additions and 10 deletions

View File

@@ -111,11 +111,10 @@ EOF
write_all_buffers = false, -- write all buffers when the current one meets `condition`
debounce_delay = 1000, -- delay after which a pending save is executed
callbacks = { -- functions to be executed at different intervals
enabling = nil, -- ran when enabling auto-save
disabling = nil, -- ran when disabling auto-save
before_saving = nil, -- ran before doing the actual save
after_saving = nil -- ran after doing the actual save
}
},
-- log debug messages to 'auto-save.log' file in neovim cache directory, set to `true` to enable
debug = false,
}
```

View File

@@ -22,11 +22,10 @@ Config = {
write_all_buffers = false, -- write all buffers when the current one meets `condition`
debounce_delay = 1000, -- delay after which a pending save is executed
callbacks = { -- functions to be executed at different intervals
enabling = nil, -- ran when enabling auto-save
disabling = nil, -- ran when disabling auto-save
before_saving = nil, -- ran before doing the actual save
after_saving = nil, -- ran after doing the actual save
},
-- log debug messages to 'auto-save.log' file in neovim cache directory, set to `true` to enable
debug = false, -- print debug messages, set to `true` to enable
},
}

View File

@@ -4,6 +4,7 @@ local cnf = require("auto-save.config")
local callback = require("auto-save.utils.data").do_callback
local colors = require("auto-save.utils.colors")
local echo = require("auto-save.utils.echo")
local logger
local autosave_running
local api = vim.api
local g = vim.g
@@ -25,6 +26,8 @@ local function cancel_timer(buf)
if timer ~= nil then
timer:close()
timers_by_buffer[buf] = nil
logger.log(buf, "Timer canceled")
end
end
@@ -37,6 +40,8 @@ local function debounce(lfn, duration)
timers_by_buffer[buf] = nil
end, duration)
timers_by_buffer[buf] = timer
logger.log(buf, "Timer started")
end
return inner_debounce
end
@@ -64,11 +69,15 @@ local function should_be_saved(buf)
return cnf.opts.condition(buf)
end
logger.log(buf, "Should save buffer")
return true
end
local function save(buf)
if not api.nvim_buf_get_option(buf, "modified") then
logger.log(buf, "Abort saving buffer")
return
end
@@ -88,7 +97,7 @@ local function save(buf)
end)
end
callback("after_saving")
logger.log(buf, "Saved buffer")
if cnf.opts.execution_message.enabled == true then
echo_execution_message()
@@ -169,7 +178,6 @@ function M.on()
group = "AutoSave",
})
callback("enabling")
autosave_running = true
end
@@ -178,7 +186,6 @@ function M.off()
clear = true,
})
callback("disabling")
autosave_running = false
end
@@ -194,6 +201,7 @@ end
function M.setup(custom_opts)
cnf:set_options(custom_opts)
logger = require("auto-save.utils.logging").new(cnf:get_options())
end
return M

View File

@@ -0,0 +1,42 @@
-- inspired from https://github.com/nvim-lua/plenary.nvim/blob/master/lua/plenary/log.lua
local M = {}
local outfile = string.format("%s/auto-save.log", vim.api.nvim_call_function("stdpath", { "cache" }))
-- it could be that the directory of the file does not exist
-- this would require further checks, see https://github.com/nvim-lua/plenary.nvim/blob/master/lua/plenary/log.lua#L138
--- @param message string
local write_to_outfile = function(message)
local f = assert(io.open(outfile, "a"))
f:write(message)
f:close()
end
M.new = function(options)
local enabled = options.debug
--- @param buf number | nil
--- @param message string
local log = function(buf, message)
if not enabled then
return
end
local log_message
if buf ~= nil then
local filename = vim.api.nvim_buf_get_name(buf)
log_message = string.format("[%s] [%s] - %s\n", os.date(), filename, message)
else
log_message = string.format("[%s] - %s\n", os.date(), message)
end
write_to_outfile(log_message)
end
return {
log = log,
}
end
return M