fix(lsp): add default position encoding when calling symbols_to_items() (#3418)
This commit is contained in:
@@ -345,7 +345,7 @@ end
|
|||||||
|
|
||||||
lsp.document_symbols = function(opts)
|
lsp.document_symbols = function(opts)
|
||||||
local params = client_position_params(opts.winnr)
|
local params = client_position_params(opts.winnr)
|
||||||
vim.lsp.buf_request(opts.bufnr, "textDocument/documentSymbol", params, function(err, result, _, _)
|
vim.lsp.buf_request(opts.bufnr, "textDocument/documentSymbol", params, function(err, result, ctx, _)
|
||||||
if err then
|
if err then
|
||||||
vim.api.nvim_err_writeln("Error when finding document symbols: " .. err.message)
|
vim.api.nvim_err_writeln("Error when finding document symbols: " .. err.message)
|
||||||
return
|
return
|
||||||
@@ -359,7 +359,14 @@ lsp.document_symbols = function(opts)
|
|||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local locations = vim.lsp.util.symbols_to_items(result or {}, opts.bufnr) or {}
|
local locations
|
||||||
|
if vim.fn.has "nvim-0.11" == 1 then
|
||||||
|
local client = assert(vim.lsp.get_client_by_id(ctx.client_id))
|
||||||
|
locations = vim.lsp.util.symbols_to_items(result or {}, opts.bufnr, client.offset_encoding) or {}
|
||||||
|
else
|
||||||
|
locations = vim.lsp.util.symbols_to_items(result or {}, opts.bufnr) or {}
|
||||||
|
end
|
||||||
|
|
||||||
locations = utils.filter_symbols(locations, opts, symbols_sorter)
|
locations = utils.filter_symbols(locations, opts, symbols_sorter)
|
||||||
if vim.tbl_isempty(locations) then
|
if vim.tbl_isempty(locations) then
|
||||||
-- error message already printed in `utils.filter_symbols`
|
-- error message already printed in `utils.filter_symbols`
|
||||||
@@ -396,13 +403,20 @@ end
|
|||||||
|
|
||||||
lsp.workspace_symbols = function(opts)
|
lsp.workspace_symbols = function(opts)
|
||||||
local params = { query = opts.query or "" }
|
local params = { query = opts.query or "" }
|
||||||
vim.lsp.buf_request(opts.bufnr, "workspace/symbol", params, function(err, server_result, _, _)
|
vim.lsp.buf_request(opts.bufnr, "workspace/symbol", params, function(err, server_result, ctx, _)
|
||||||
if err then
|
if err then
|
||||||
vim.api.nvim_err_writeln("Error when finding workspace symbols: " .. err.message)
|
vim.api.nvim_err_writeln("Error when finding workspace symbols: " .. err.message)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local locations = vim.lsp.util.symbols_to_items(server_result or {}, opts.bufnr) or {}
|
local locations
|
||||||
|
if vim.fn.has "nvim-0.11" == 1 then
|
||||||
|
local client = assert(vim.lsp.get_client_by_id(ctx.client_id))
|
||||||
|
locations = vim.lsp.util.symbols_to_items(server_result or {}, opts.bufnr, client.offset_encoding) or {}
|
||||||
|
else
|
||||||
|
locations = vim.lsp.util.symbols_to_items(server_result or {}, opts.bufnr) or {}
|
||||||
|
end
|
||||||
|
|
||||||
locations = utils.filter_symbols(locations, opts, symbols_sorter)
|
locations = utils.filter_symbols(locations, opts, symbols_sorter)
|
||||||
if vim.tbl_isempty(locations) then
|
if vim.tbl_isempty(locations) then
|
||||||
-- error message already printed in `utils.filter_symbols`
|
-- error message already printed in `utils.filter_symbols`
|
||||||
@@ -448,11 +462,16 @@ local function get_workspace_symbols_requester(bufnr, opts)
|
|||||||
local results = rx() ---@type table<integer, {error: lsp.ResponseError?, result: lsp.WorkspaceSymbol?}>
|
local results = rx() ---@type table<integer, {error: lsp.ResponseError?, result: lsp.WorkspaceSymbol?}>
|
||||||
local locations = {} ---@type vim.quickfix.entry[]
|
local locations = {} ---@type vim.quickfix.entry[]
|
||||||
|
|
||||||
for _, client_res in pairs(results) do
|
for client_id, client_res in pairs(results) do
|
||||||
if client_res.error then
|
if client_res.error then
|
||||||
vim.api.nvim_err_writeln("Error when executing workspace/symbol : " .. client_res.error.message)
|
vim.api.nvim_err_writeln("Error when executing workspace/symbol : " .. client_res.error.message)
|
||||||
elseif client_res.result ~= nil then
|
elseif client_res.result ~= nil then
|
||||||
vim.list_extend(locations, vim.lsp.util.symbols_to_items(client_res.result, bufnr))
|
if vim.fn.has "nvim-0.11" == 1 then
|
||||||
|
local client = assert(vim.lsp.get_client_by_id(client_id))
|
||||||
|
vim.list_extend(locations, vim.lsp.util.symbols_to_items(client_res.result, bufnr, client.offset_encoding))
|
||||||
|
else
|
||||||
|
vim.list_extend(locations, vim.lsp.util.symbols_to_items(client_res.result, bufnr))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user