diff --git a/lua/nvim-tree.lua b/lua/nvim-tree.lua index 22a9446c7df..507855b77cc 100644 --- a/lua/nvim-tree.lua +++ b/lua/nvim-tree.lua @@ -880,8 +880,10 @@ function M.setup(conf) require("nvim-tree.notify").setup(opts) require("nvim-tree.log").setup(opts) - log.line("config", "default config + user") - log.raw("config", "%s\n", vim.inspect(opts)) + if log.enabled "config" then + log.line("config", "default config + user") + log.raw("config", "%s\n", vim.inspect(opts)) + end require("nvim-tree.actions").setup(opts) require("nvim-tree.keymap").setup(opts) diff --git a/lua/nvim-tree/actions/init.lua b/lua/nvim-tree/actions/init.lua index 7a9fad21e79..868ee0a502c 100644 --- a/lua/nvim-tree/actions/init.lua +++ b/lua/nvim-tree/actions/init.lua @@ -437,8 +437,10 @@ function M.setup(opts) require("nvim-tree.actions.dispatch").setup(M.custom_keypress_funcs) - log.line("config", "active mappings") - log.raw("config", "%s\n", vim.inspect(M.mappings)) + if log.enabled "config" then + log.line("config", "active mappings") + log.raw("config", "%s\n", vim.inspect(M.mappings)) + end end return M diff --git a/lua/nvim-tree/git/runner.lua b/lua/nvim-tree/git/runner.lua index 7a12894d009..ee9328301e8 100644 --- a/lua/nvim-tree/git/runner.lua +++ b/lua/nvim-tree/git/runner.lua @@ -59,7 +59,7 @@ function Runner:_getopts(stdout_handle, stderr_handle) end function Runner:_log_raw_output(output) - if output and type(output) == "string" then + if log.enabled "git" and output and type(output) == "string" then log.raw("git", "%s", output) log.line("git", "done") end diff --git a/lua/nvim-tree/log.lua b/lua/nvim-tree/log.lua index 9f035bad810..2a17168fac3 100644 --- a/lua/nvim-tree/log.lua +++ b/lua/nvim-tree/log.lua @@ -8,7 +8,7 @@ local M = { --- @param fmt string for string.format --- @vararg any arguments for string.format function M.raw(typ, fmt, ...) - if not M.path or not M.config.types[typ] and not M.config.types.all then + if not M.enabled(typ) then return end @@ -21,32 +21,48 @@ function M.raw(typ, fmt, ...) end end ---- Write to log file via M.line +--- Write profile start to log file --- START is prefixed +--- @param fmt string for string.format +--- @vararg any arguments for string.format --- @return number nanos to pass to profile_end function M.profile_start(fmt, ...) - if not M.path or not M.config.types.profile and not M.config.types.all then + if M.enabled "profile" then + M.line("profile", "START " .. (fmt or "???"), ...) + return vim.loop.hrtime() + else return 0 end - M.line("profile", "START " .. (fmt or "???"), ...) - return vim.loop.hrtime() end ---- Write to log file via M.line +--- Write profile end to log file --- END is prefixed and duration in seconds is suffixed --- @param start number nanos returned from profile_start +--- @param fmt string for string.format +--- @vararg any arguments for string.format function M.profile_end(start, fmt, ...) - if not M.path or not M.config.types.profile and not M.config.types.all then - return + if M.enabled "profile" then + local millis = start and math.modf((vim.loop.hrtime() - start) / 1000000) or -1 + M.line("profile", "END " .. (fmt or "???") .. " " .. millis .. "ms", ...) end - local millis = start and math.modf((vim.loop.hrtime() - start) / 1000000) or -1 - M.line("profile", "END " .. (fmt or "???") .. " " .. millis .. "ms", ...) end --- Write to log file via M.raw --- time and typ are prefixed and a trailing newline is added +--- Write to log file +--- time and typ are prefixed and a trailing newline is added +--- @param typ string as per log.types config +--- @param fmt string for string.format +--- @vararg any arguments for string.format function M.line(typ, fmt, ...) - M.raw(typ, string.format("[%s] [%s] %s\n", os.date "%Y-%m-%d %H:%M:%S", typ, fmt), ...) + if M.enabled(typ) then + M.raw(typ, string.format("[%s] [%s] %s\n", os.date "%Y-%m-%d %H:%M:%S", typ, fmt), ...) + end +end + +--- Logging is enabled for typ or all +--- @param typ string as per log.types config +--- @return boolean +function M.enabled(typ) + return M.path ~= nil and (M.config.types[typ] or M.config.types.all) end function M.setup(opts)