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

@@ -578,7 +578,9 @@ function Client:initialize()
local rpc = self.rpc
rpc.request('initialize', init_params, function(init_err, result)
assert(not init_err, tostring(init_err))
if init_err then
error(lsp.rpc.format_rpc_error(init_err))
end
assert(result, 'server sent empty result')
rpc.notify('initialized', vim.empty_dict())
self.initialized = true