summaryrefslogtreecommitdiffstatshomepage
path: root/nvim/.config
diff options
context:
space:
mode:
authorToby Vincent <tobyv@tobyvin.dev>2023-10-06 20:34:23 -0500
committerToby Vincent <tobyv@tobyvin.dev>2023-10-06 20:34:23 -0500
commit5bc694f838a0dffca005972c9ea4e31cce28852a (patch)
tree8f789d7776344e7f5d452551ce14f5cecb800a93 /nvim/.config
parent80b2ad93a22cebd3e077f5d9694cdf507b3eabe8 (diff)
fix(nvim): improve lsp external docs handler
Diffstat (limited to 'nvim/.config')
-rw-r--r--nvim/.config/nvim/lua/tobyvin/lsp/handlers.lua24
1 files changed, 17 insertions, 7 deletions
diff --git a/nvim/.config/nvim/lua/tobyvin/lsp/handlers.lua b/nvim/.config/nvim/lua/tobyvin/lsp/handlers.lua
index 26d4c9e..a095d43 100644
--- a/nvim/.config/nvim/lua/tobyvin/lsp/handlers.lua
+++ b/nvim/.config/nvim/lua/tobyvin/lsp/handlers.lua
@@ -1,14 +1,24 @@
-function vim.lsp.buf.external_docs()
- local params = vim.lsp.util.make_position_params()
- return vim.lsp.buf_request(0, "experimental/externalDocs", params)
-end
-
-return {
+local M = {
["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, {
border = "single",
}),
-
["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, {
border = "single",
}),
+ ["experimental/externalDocs"] = function(_, url)
+ if url then
+ if vim.fn.executable("xdg-open") == 1 then
+ require("plenary.job"):new({ command = "xdg-open", args = { url } }):start()
+ else
+ pcall(vim.fn["netrw#BrowseX"], url, 0)
+ end
+ end
+ end,
}
+
+function vim.lsp.buf.external_docs()
+ local params = vim.lsp.util.make_position_params()
+ return vim.lsp.buf_request(0, "experimental/externalDocs", params, M["experimental/externalDocs"])
+end
+
+return M