From 26bf1702e8617d90878e706ffacba902ad686b7f Mon Sep 17 00:00:00 2001 From: Toby Vincent Date: Mon, 2 Sep 2024 14:29:07 -0500 Subject: fix(nvim): replace nvim-notify with built in --- nvim/.config/nvim/init.lua | 2 + nvim/.config/nvim/lazy-lock.json | 1 - nvim/.config/nvim/lua/plugins/notify.lua | 18 --------- nvim/.config/nvim/lua/tobyvin/lsp/configs.lua | 2 + nvim/.config/nvim/lua/tobyvin/utils.lua | 1 + nvim/.config/nvim/lua/tobyvin/utils/notify.lua | 51 ++++++++++++++++++++++++++ 6 files changed, 56 insertions(+), 19 deletions(-) delete mode 100644 nvim/.config/nvim/lua/plugins/notify.lua create mode 100644 nvim/.config/nvim/lua/tobyvin/utils/notify.lua (limited to 'nvim/.config') diff --git a/nvim/.config/nvim/init.lua b/nvim/.config/nvim/init.lua index d4fe74b..a92bcbf 100644 --- a/nvim/.config/nvim/init.lua +++ b/nvim/.config/nvim/init.lua @@ -1,4 +1,6 @@ U = require("tobyvin.utils") +vim.notify = U.notify.notify +vim.notify_once = U.notify.notify_once vim.ui.select = U.ui.select vim.ui.input = U.ui.input require("tobyvin.options") diff --git a/nvim/.config/nvim/lazy-lock.json b/nvim/.config/nvim/lazy-lock.json index bad3b07..561ad7d 100644 --- a/nvim/.config/nvim/lazy-lock.json +++ b/nvim/.config/nvim/lazy-lock.json @@ -24,7 +24,6 @@ "nvim-lint": { "branch": "master", "commit": "efc6fc83f0772283e064c53a8f9fb5645bde0bc0" }, "nvim-lspconfig": { "branch": "master", "commit": "652386deae739e38fa1bcf2f06e3e7de9b3436ba" }, "nvim-nio": { "branch": "master", "commit": "a428f309119086dc78dd4b19306d2d67be884eee" }, - "nvim-notify": { "branch": "master", "commit": "d333b6f167900f6d9d42a59005d82919830626bf" }, "nvim-texlabconfig": { "branch": "master", "commit": "b817297fd07bd6c127df56d01f439f2f838c49ed" }, "nvim-treesitter": { "branch": "master", "commit": "3e0feeb062b29bb7d6d6df1e32ba28111c2bb734" }, "nvim-treesitter-textobjects": { "branch": "master", "commit": "ca93cb2c34b67ab22d01976fc90bc95627a3317f" }, diff --git a/nvim/.config/nvim/lua/plugins/notify.lua b/nvim/.config/nvim/lua/plugins/notify.lua deleted file mode 100644 index 7a25fec..0000000 --- a/nvim/.config/nvim/lua/plugins/notify.lua +++ /dev/null @@ -1,18 +0,0 @@ ----@type LazySpec -local M = { - "rcarriga/nvim-notify", - opts = { - max_width = math.min(vim.o.columns, 80), - render = "wrapped-compact", - stages = "no_animation", - }, -} - -function M:init() - ---@diagnostic disable-next-line: duplicate-set-field - vim.notify = function(...) - return require("notify").notify(...) - end -end - -return M diff --git a/nvim/.config/nvim/lua/tobyvin/lsp/configs.lua b/nvim/.config/nvim/lua/tobyvin/lsp/configs.lua index c9508a6..3bb4de8 100644 --- a/nvim/.config/nvim/lua/tobyvin/lsp/configs.lua +++ b/nvim/.config/nvim/lua/tobyvin/lsp/configs.lua @@ -150,6 +150,8 @@ local M = { vim.log.levels.ERROR, { title = client.name } ) + else + vim.notify("No external docs found", vim.log.levels.WARN, { title = client.name }) end return "gx" else diff --git a/nvim/.config/nvim/lua/tobyvin/utils.lua b/nvim/.config/nvim/lua/tobyvin/utils.lua index 8d304ac..997e57d 100644 --- a/nvim/.config/nvim/lua/tobyvin/utils.lua +++ b/nvim/.config/nvim/lua/tobyvin/utils.lua @@ -4,6 +4,7 @@ local M = { lsp = require("tobyvin.utils.lsp"), session = require("tobyvin.utils.session"), ui = require("tobyvin.utils.ui"), + notify = require("tobyvin.utils.notify") } ---@param ms integer diff --git a/nvim/.config/nvim/lua/tobyvin/utils/notify.lua b/nvim/.config/nvim/lua/tobyvin/utils/notify.lua new file mode 100644 index 0000000..fb3a643 --- /dev/null +++ b/nvim/.config/nvim/lua/tobyvin/utils/notify.lua @@ -0,0 +1,51 @@ +local M = {} + +--- Displays a notification to the user by writing to |:messages|. +---@param msg string Content of the notification to show to the user. +---@param level integer|nil One of the values from |vim.log.levels|. +---@param opts table|nil Optional parameters. Currenly only uses `opts.title`. +---@diagnostic disable-next-line: unused-local +function M.notify(msg, level, opts) -- luacheck: no unused args + if opts and opts.title then + msg = string.format("%s: %s", opts.title, msg) + end + + if level == vim.log.levels.ERROR then + vim.api.nvim_err_writeln(msg) + elseif level == vim.log.levels.WARN then + vim.api.nvim_echo({ { msg, "WarningMsg" } }, true, {}) + else + vim.api.nvim_echo({ { msg } }, true, {}) + end +end + +do + --- @type table> + local notified = setmetatable({}, { + __index = function() + return {} + end, + }) + + --- Displays a notification only one time. + --- + --- Like |vim.notify()|, but subsequent calls with the same message (and title) + --- will not display a notification. + --- + ---@param msg string Content of the notification to show to the user. + ---@param level integer|nil One of the values from |vim.log.levels|. + ---@param opts table|nil Optional parameters. Currently only uses `opts.title`. + ---@return boolean true if message was displayed, else false + function M.notify_once(msg, level, opts) + opts = opts or {} + + if not notified[msg] then + vim.notify(msg, level, opts) + notified[opts.title or "_"][msg] = true + return true + end + return false + end +end + +return M -- cgit v1.2.3-70-g09d2