From 212fdadce413486fc4a5a5f1e0e09bd0eefd87c3 Mon Sep 17 00:00:00 2001 From: kylo252 <59826753+kylo252@users.noreply.github.com> Date: Thu, 21 Oct 2021 17:51:22 +0200 Subject: fix: handle vim.notify when missing a log level (#1818) --- lua/lvim/core/log.lua | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'lua/lvim/core') diff --git a/lua/lvim/core/log.lua b/lua/lvim/core/log.lua index 9ddc641f..688246f4 100644 --- a/lua/lvim/core/log.lua +++ b/lua/lvim/core/log.lua @@ -89,6 +89,10 @@ function Log:init() -- Overwrite vim.notify to use the logger vim.notify = function(msg, vim_log_level, opts) nvim_notify_params = opts or {} + -- vim_log_level can be omitted + if type(vim_log_level) == "string" then + vim_log_level = Log.levels[(vim_log_level):upper() or "INFO"] + end -- https://github.com/neovim/neovim/blob/685cf398130c61c158401b992a1893c2405cd7d2/runtime/lua/vim/lsp/log.lua#L5 logger:log(vim_log_level + 1, msg) end -- cgit v1.2.3 From 20e5e507973362016381538aab3091fc0f63ef03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20Preu=C3=9F?= Date: Fri, 22 Oct 2021 13:03:48 +0200 Subject: fix(lualine): use tabstop in spaces component when sensible (#1807) --- lua/lvim/core/lualine/components.lua | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'lua/lvim/core') diff --git a/lua/lvim/core/lualine/components.lua b/lua/lvim/core/lualine/components.lua index b10fdad9..9366df56 100644 --- a/lua/lvim/core/lualine/components.lua +++ b/lua/lvim/core/lualine/components.lua @@ -122,11 +122,14 @@ return { progress = { "progress", cond = conditions.hide_in_width, color = {} }, spaces = { function() - local label = "Spaces: " if not vim.api.nvim_buf_get_option(0, "expandtab") then - label = "Tab size: " + return "Tab size: " .. vim.api.nvim_buf_get_option(0, "tabstop") .. " " end - return label .. vim.api.nvim_buf_get_option(0, "shiftwidth") .. " " + local size = vim.api.nvim_buf_get_option(0, "shiftwidth") + if size == 0 then + size = vim.api.nvim_buf_get_option(0, "tabstop") + end + return "Spaces: " .. size .. " " end, cond = conditions.hide_in_width, color = {}, -- cgit v1.2.3 From 10df0b5ffd0fd96b210747e9169dad08c81dca1b Mon Sep 17 00:00:00 2001 From: Matteo Bigoi <1781140+crisidev@users.noreply.github.com> Date: Fri, 22 Oct 2021 20:51:32 +0100 Subject: [Bugfix] ensure the log level is never nil (#1820) --- lua/lvim/core/log.lua | 3 +++ 1 file changed, 3 insertions(+) (limited to 'lua/lvim/core') diff --git a/lua/lvim/core/log.lua b/lua/lvim/core/log.lua index 688246f4..502fd19b 100644 --- a/lua/lvim/core/log.lua +++ b/lua/lvim/core/log.lua @@ -90,6 +90,9 @@ function Log:init() vim.notify = function(msg, vim_log_level, opts) nvim_notify_params = opts or {} -- vim_log_level can be omitted + if vim_log_level == nil then + vim_log_level = Log.levels["INFO"] + end if type(vim_log_level) == "string" then vim_log_level = Log.levels[(vim_log_level):upper() or "INFO"] end -- cgit v1.2.3 From a96a44a16a46dae0aee0f5689ccfe644d2a27c0f Mon Sep 17 00:00:00 2001 From: kylo252 <59826753+kylo252@users.noreply.github.com> Date: Fri, 22 Oct 2021 23:46:43 +0200 Subject: [fix] fix notify's highlight groups and make it optional (#1827) --- lua/lvim/core/builtins/init.lua | 1 + lua/lvim/core/log.lua | 57 ++++++++++++++++++++++++----------------- lua/lvim/core/notify.lua | 31 ++++++++++++++++++++++ 3 files changed, 65 insertions(+), 24 deletions(-) create mode 100644 lua/lvim/core/notify.lua (limited to 'lua/lvim/core') diff --git a/lua/lvim/core/builtins/init.lua b/lua/lvim/core/builtins/init.lua index 8f83072e..315deed3 100644 --- a/lua/lvim/core/builtins/init.lua +++ b/lua/lvim/core/builtins/init.lua @@ -15,6 +15,7 @@ local builtins = { "lvim.core.bufferline", "lvim.core.autopairs", "lvim.core.comment", + "lvim.core.notify", "lvim.core.lualine", } diff --git a/lua/lvim/core/log.lua b/lua/lvim/core/log.lua index 502fd19b..557590e1 100644 --- a/lua/lvim/core/log.lua +++ b/lua/lvim/core/log.lua @@ -1,6 +1,7 @@ local Log = {} local logfile = string.format("%s/%s.log", vim.fn.stdpath "cache", "lvim") +local in_headless = #vim.api.nvim_list_uis() == 0 Log.levels = { TRACE = 1, @@ -33,7 +34,7 @@ function Log:init() nvim_notify_params_injecter(nil, {}) local log_level = Log.levels[(lvim.log.level):upper() or "WARN"] - structlog.configure { + local lvim_log = { lvim = { sinks = { structlog.sinks.Console(log_level, { @@ -49,25 +50,6 @@ function Log:init() { level = structlog.formatters.FormatColorizer.color_level() } ), }), - structlog.sinks.NvimNotify(Log.levels.INFO, { - processors = { - nvim_notify_default_namer, - nvim_notify_params_injecter, - }, - formatter = structlog.formatters.Format( -- - "%s", - { "msg" }, - { blacklist_all = true } - ), - params_map = { - icon = "icon", - keep = "keep", - on_open = "on_open", - on_close = "on_close", - timeout = "timeout", - title = "title", - }, - }), structlog.sinks.File(Log.levels.TRACE, logfile, { processors = { structlog.processors.Namer(), @@ -83,12 +65,39 @@ function Log:init() }, } + if not in_headless and lvim.builtin.notify.active then + table.insert( + lvim_log.lvim.sinks, + structlog.sinks.NvimNotify(Log.levels.INFO, { + processors = { + nvim_notify_default_namer, + nvim_notify_params_injecter, + }, + formatter = structlog.formatters.Format( -- + "%s", + { "msg" }, + { blacklist_all = true } + ), + params_map = { + icon = "icon", + keep = "keep", + on_open = "on_open", + on_close = "on_close", + timeout = "timeout", + title = "title", + }, + }) + ) + end + + structlog.configure(lvim_log) + local logger = structlog.get_logger "lvim" - if lvim.log.override_notify then + if not in_headless and lvim.builtin.notify.active and lvim.log.override_notify then -- Overwrite vim.notify to use the logger vim.notify = function(msg, vim_log_level, opts) - nvim_notify_params = opts or {} + nvim_notify_params = vim.tbl_deep_extend("force", lvim.builtin.notify.opts, opts) -- vim_log_level can be omitted if vim_log_level == nil then vim_log_level = Log.levels["INFO"] @@ -109,7 +118,7 @@ end ---@param level string [same as vim.log.log_levels] function Log:add_entry(level, msg, event) if self.__handle then - self.__handle:log(level, msg, event) + self.__handle:log(level, vim.inspect(msg), event) return end @@ -119,7 +128,7 @@ function Log:add_entry(level, msg, event) end self.__handle = logger - self.__handle:log(level, msg, event) + self.__handle:log(level, vim.inspect(msg), event) end ---Retrieves the path of the logfile diff --git a/lua/lvim/core/notify.lua b/lua/lvim/core/notify.lua new file mode 100644 index 00000000..7d222a89 --- /dev/null +++ b/lua/lvim/core/notify.lua @@ -0,0 +1,31 @@ +local M = {} + +function M.config() + local pallete = require "onedarker.palette" + lvim.builtin.notify = { + active = false, + on_config_done = nil, + -- TODO: update after https://github.com/rcarriga/nvim-notify/pull/24 + opts = { + ---@usage Animation style (see below for details) + stages = "fade_in_slide_out", + + ---@usage Default timeout for notifications + timeout = 5000, + + ---@usage For stages that change opacity this is treated as the highlight behind the window + background_colour = pallete.fg, + + ---@usage Icons for the different levels + icons = { + ERROR = "", + WARN = "", + INFO = "", + DEBUG = "", + TRACE = "✎", + }, + }, + } +end + +return M -- cgit v1.2.3 From 0ea08c7a1c1de5cb381351230d11513e287c42db Mon Sep 17 00:00:00 2001 From: kylo252 <59826753+kylo252@users.noreply.github.com> Date: Sat, 23 Oct 2021 13:11:05 +0200 Subject: fix(log): don't rely on lvim.builtin.notify.active (#1831) --- lua/lvim/core/log.lua | 45 ++++++++++++++++----------------------------- lua/lvim/core/notify.lua | 28 +++++++++++++++++++++------- 2 files changed, 37 insertions(+), 36 deletions(-) (limited to 'lua/lvim/core') diff --git a/lua/lvim/core/log.lua b/lua/lvim/core/log.lua index 557590e1..9950af28 100644 --- a/lua/lvim/core/log.lua +++ b/lua/lvim/core/log.lua @@ -1,7 +1,6 @@ local Log = {} local logfile = string.format("%s/%s.log", vim.fn.stdpath "cache", "lvim") -local in_headless = #vim.api.nvim_list_uis() == 0 Log.levels = { TRACE = 1, @@ -19,20 +18,20 @@ function Log:init() return nil end - local nvim_notify_params = {} - local nvim_notify_params_injecter = function(_, entry) - for key, value in pairs(nvim_notify_params) do - entry[key] = value - end - return entry - end + local notify_handler = require "lvim.core.notify" - local nvim_notify_default_namer = function(logger, entry) - entry["title"] = logger.name - return entry + ---Check if notify is available + ---@return boolean + local is_notify_available = function() + local in_headless = #vim.api.nvim_list_uis() == 0 + --We can't rely on lvim.builtin.notify.active since this can be used before the config loader + local has_notify_plugin = pcall(require, "notify") + if not in_headless and has_notify_plugin then + return true + end + return false end - nvim_notify_params_injecter(nil, {}) local log_level = Log.levels[(lvim.log.level):upper() or "WARN"] local lvim_log = { lvim = { @@ -65,13 +64,13 @@ function Log:init() }, } - if not in_headless and lvim.builtin.notify.active then + if is_notify_available() then table.insert( lvim_log.lvim.sinks, structlog.sinks.NvimNotify(Log.levels.INFO, { processors = { - nvim_notify_default_namer, - nvim_notify_params_injecter, + notify_handler.default_namer, + notify_handler.params_injecter, }, formatter = structlog.formatters.Format( -- "%s", @@ -94,20 +93,8 @@ function Log:init() local logger = structlog.get_logger "lvim" - if not in_headless and lvim.builtin.notify.active and lvim.log.override_notify then - -- Overwrite vim.notify to use the logger - vim.notify = function(msg, vim_log_level, opts) - nvim_notify_params = vim.tbl_deep_extend("force", lvim.builtin.notify.opts, opts) - -- vim_log_level can be omitted - if vim_log_level == nil then - vim_log_level = Log.levels["INFO"] - end - if type(vim_log_level) == "string" then - vim_log_level = Log.levels[(vim_log_level):upper() or "INFO"] - end - -- https://github.com/neovim/neovim/blob/685cf398130c61c158401b992a1893c2405cd7d2/runtime/lua/vim/lsp/log.lua#L5 - logger:log(vim_log_level + 1, msg) - end + if lvim.log.override_notify then + logger:log(Log.levels.INFO, "Ignoring request to override vim.notify with structlog due to instabilities") end return logger diff --git a/lua/lvim/core/notify.lua b/lua/lvim/core/notify.lua index 7d222a89..5339357b 100644 --- a/lua/lvim/core/notify.lua +++ b/lua/lvim/core/notify.lua @@ -2,25 +2,26 @@ local M = {} function M.config() local pallete = require "onedarker.palette" + lvim.builtin.notify = { active = false, on_config_done = nil, -- TODO: update after https://github.com/rcarriga/nvim-notify/pull/24 opts = { - ---@usage Animation style (see below for details) - stages = "fade_in_slide_out", + ---@usage Animation style one of { "fade", "slide", "fade_in_slide_out", "static" } + stages = "slide", - ---@usage Default timeout for notifications + ---@usage timeout for notifications in ms, default 5000 timeout = 5000, - ---@usage For stages that change opacity this is treated as the highlight behind the window + ---@usage highlight behind the window for stages that change opacity background_colour = pallete.fg, ---@usage Icons for the different levels icons = { - ERROR = "", - WARN = "", - INFO = "", + ERROR = "", + WARN = "", + INFO = "", DEBUG = "", TRACE = "✎", }, @@ -28,4 +29,17 @@ function M.config() } end +M.params_injecter = function(_, entry) + -- FIXME: this is currently getting ignored or is not passed correctly + for key, value in pairs(lvim.builtin.notify.opts) do + entry[key] = value + end + return entry +end + +M.default_namer = function(logger, entry) + entry["title"] = logger.name + return entry +end + return M -- cgit v1.2.3