commit 9567fb050795409f15b022a3c3cb8f54d8e2fea5
parent f0137bf44374b76793a353ca0365432bb9443801
Author: Evgeni Chasnovski <evgeni.chasnovski@gmail.com>
Date: Thu, 19 Feb 2026 13:59:00 +0200
fix(defaults): silent `gx` if no `textDocument/documentLink` support #37969
Problem: If buffer has attached LSP servers and none of them supports
`textDocument/documentLink` method, typing `gx` results in a warning
about that.
Solution: Explicitly check that at least one server supports the target
method before making the LSP request.
Diffstat:
1 file changed, 24 insertions(+), 11 deletions(-)
diff --git a/runtime/lua/vim/ui.lua b/runtime/lua/vim/ui.lua
@@ -204,20 +204,19 @@ function M._get_open_cmd()
end
end
---- Returns all URLs at cursor, if any.
---- @return string[]
-function M._get_urls()
- local urls = {} ---@type string[]
-
- local bufnr = vim.api.nvim_get_current_buf()
- local cursor = vim.api.nvim_win_get_cursor(0)
- local row = cursor[1] - 1
- local col = cursor[2]
-
- -- Find LSP document links under the cursor.
+--- @param bufnr integer
+local get_lsp_urls = function(bufnr)
+ local has_lsp_support = false
+ for _, client in pairs(vim.lsp.get_clients({ bufnr = bufnr })) do
+ has_lsp_support = has_lsp_support or client:supports_method('textDocument/documentLink', bufnr)
+ end
+ if not has_lsp_support then
+ return {}
+ end
local params = { textDocument = vim.lsp.util.make_text_document_params(bufnr) }
local results = vim.lsp.buf_request_sync(bufnr, 'textDocument/documentLink', params)
+ local urls = {}
for client_id, result in pairs(results or {}) do
if result.error then
vim.lsp.log.error(result.error)
@@ -239,6 +238,20 @@ function M._get_urls()
end
end
end
+ return urls
+end
+
+--- Returns all URLs at cursor, if any.
+--- @return string[]
+function M._get_urls()
+ local urls = {} ---@type string[]
+
+ local bufnr = vim.api.nvim_get_current_buf()
+ local cursor = vim.api.nvim_win_get_cursor(0)
+ local row = cursor[1] - 1
+ local col = cursor[2]
+
+ urls = vim.list_extend(urls, get_lsp_urls(bufnr))
local extmarks = vim.api.nvim_buf_get_extmarks(bufnr, -1, { row, col }, { row, col }, {
details = true,