refactor(lsp): remove implicit rpc error tostring #38707

Problem:
LSP error responses implicitly rely on a custom `__tostring` function
(`vim.lsp.rpc.format_rpc_error`) for formatting. This causes errors that are not
created via `vim.lsp.rpc.error` to behave inconsistently with those that are.

Furthermore, we usually use `log.error` to print these errors, which uses
`vim.inspect` under the hood, so the custom `__tostring`  provides little
benefit.

This increases the difficulty of refactoring the code, as it tightly couples RPC
error handling with the LSP.

Solution:
Convert every potential `__tostring` call to an explicit one. Since we don't
describe this behavior in the documentation, this should not be a breaking
change.
This commit is contained in:
Yi Ming
2026-04-02 20:53:29 +08:00
committed by GitHub
parent 2cf5dcb170
commit 0eb2eb4106
5 changed files with 15 additions and 11 deletions

View File

@@ -1460,7 +1460,8 @@ function M.selection_range(direction, timeout_ms)
timeout_ms = timeout_ms or 1000
local result, err = lsp.buf_request_sync(0, method, params, timeout_ms)
if err then
lsp.log.error('selectionRange request failed: ' .. err)
local err_message = type(err) == 'table' and lsp.rpc.format_rpc_error(err) or err
lsp.log.error('selectionRange request failed: ' .. err_message)
return
end
if not result or not result[client.id] or not result[client.id].result then