aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--nvim/.config/nvim/init.lua2
-rw-r--r--nvim/.config/nvim/lazy-lock.json1
-rw-r--r--nvim/.config/nvim/lua/plugins/notify.lua18
-rw-r--r--nvim/.config/nvim/lua/tobyvin/lsp/configs.lua2
-rw-r--r--nvim/.config/nvim/lua/tobyvin/utils.lua1
-rw-r--r--nvim/.config/nvim/lua/tobyvin/utils/notify.lua51
6 files changed, 56 insertions, 19 deletions
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<string,table<string,true>>
+ 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