Skip to content

Commit

Permalink
fix(#1970): additional log function gating for efficiency when not lo…
Browse files Browse the repository at this point in the history
…gging (#1971)

* fix(#1970): additional log function gating for efficiency when not logging

* fix(#1970): additional log function gating for efficiency when not logging
  • Loading branch information
alex-courtis committed Feb 5, 2023
1 parent 59e65d8 commit 02fdc26
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 18 deletions.
6 changes: 4 additions & 2 deletions lua/nvim-tree.lua
Expand Up @@ -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)
Expand Down
6 changes: 4 additions & 2 deletions lua/nvim-tree/actions/init.lua
Expand Up @@ -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
2 changes: 1 addition & 1 deletion lua/nvim-tree/git/runner.lua
Expand Up @@ -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
Expand Down
42 changes: 29 additions & 13 deletions lua/nvim-tree/log.lua
Expand Up @@ -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

Expand All @@ -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)
Expand Down

0 comments on commit 02fdc26

Please sign in to comment.