diff --git a/lua/gopher/_utils/log.lua b/lua/gopher/_utils/log.lua index 5cb412f..c00d686 100644 --- a/lua/gopher/_utils/log.lua +++ b/lua/gopher/_utils/log.lua @@ -3,6 +3,23 @@ -- for the code i have stolen(or have inspected by idk) local c = require "gopher.config" +---@class Gopher.Logger +---@field get_outfile fun():string +---@field trace fun(...) +---@field fmt_trace fun(...) +---@field debug fun(...) +---@field fmt_debug fun(...) +---@field info fun(...) +---@field fmt_info fun(...) +---@field warn fun(...) +---@field fmt_warn fun(...) +---@field error fun(...) +---@field fmt_error fun(...) + +---@type Gopher.Logger +---@diagnostic disable-next-line: missing-fields +local log = {} + local config = { -- Name of the plugin. Prepended to log messages name = c.___plugin_name, @@ -32,28 +49,12 @@ local config = { -- Can limit the number of decimals displayed for floats float_precision = 0.01, } - ----@class Gopher.Logger ----@field outfile string ----@field trace fun(...) ----@field fmt_trace fun(...) ----@field debug fun(...) ----@field fmt_debug fun(...) ----@field info fun(...) ----@field fmt_info fun(...) ----@field warn fun(...) ----@field fmt_warn fun(...) ----@field error fun(...) ----@field fmt_error fun(...) - ----@type Gopher.Logger ----@diagnostic disable-next-line: missing-fields -local log = { - outfile = table.concat { +function log.get_outfile() + return table.concat { (vim.fn.has "nvim-0.8.0" == 1) and vim.fn.stdpath "log" or vim.fn.stdpath "cache", ("/%s.log"):format(config.name), - }, -} + } +end -- selene: allow(incorrect_standard_library_use) local unpack = unpack or table.unpack @@ -133,7 +134,7 @@ do -- Output to log file if config.use_file then - local fp = assert(io.open(log.outfile, "a")) + local fp = assert(io.open(log.get_outfile(), "a")) local str = string.format("[%-6s%s] %s: %s\n", nameupper, os.date(), lineinfo, msg) fp:write(str) fp:close() diff --git a/lua/gopher/config.lua b/lua/gopher/config.lua index cabcd7c..a2ffe1c 100644 --- a/lua/gopher/config.lua +++ b/lua/gopher/config.lua @@ -72,7 +72,7 @@ local _config = default_config -- if you don't belive me that i am secret see -- the line below it says @private ---@private -_config.___plugin_name = "gopher.nvim" +_config.___plugin_name = "gopher.nvim" ---@diagnostic disable-line: inject-field ---@param user_config? gopher.Config function config.setup(user_config) diff --git a/lua/gopher/init.lua b/lua/gopher/init.lua index df0d174..57c19ea 100644 --- a/lua/gopher/init.lua +++ b/lua/gopher/init.lua @@ -9,6 +9,7 @@ ---@tag gopher.nvim-table-of-contents ---@toc +local log = require "gopher._utils.log" local tags = require "gopher.struct_tags" local tests = require "gopher.gotests" local gocmd = require("gopher._utils.runner.gocmd").run @@ -21,7 +22,12 @@ local gopher = {} --- Calling this function is optional, if you ok with default settings. Look |gopher.nvim.config-defaults| --- ---@usage `require("gopher").setup {}` (replace `{}` with your `config` table) -gopher.setup = require("gopher.config").setup +gopher.setup = function(user_config) + log.debug "setting up config" + log.debug(vim.inspect(user_config)) + + require("gopher.config").setup(user_config) +end ---@toc_entry Install dependencies ---@tag gopher.nvim-install-deps diff --git a/plugin/gopher.vim b/plugin/gopher.vim index 997ec94..a219a1c 100644 --- a/plugin/gopher.vim +++ b/plugin/gopher.vim @@ -11,3 +11,4 @@ command! -nargs=* GoGenerate :lua require"gopher".generate() command! GoCmt :lua require"gopher".comment() command! GoIfErr :lua require"gopher".iferr() command! GoInstallDeps :lua require"gopher".install_deps() +command! GopherLog :lua vim.cmd("tabnew " .. require("gopher._utils.log").get_outfile())