aboutsummaryrefslogtreecommitdiffstats
path: root/lua/lspconfig/server_configurations/denols.lua
diff options
context:
space:
mode:
authorsigmaSd <bedisnbiba@gmail.com>2022-07-14 08:43:22 +0100
committerGitHub <noreply@github.com>2022-07-14 00:43:22 -0700
commit0da8c129dc27e70770c3247c44988bbf0af6b1af (patch)
treedad3f862eb4f2e978a534c9d8d35f711af3cd156 /lua/lspconfig/server_configurations/denols.lua
parentdocs: update server_configurations.md (diff)
downloadnvim-lspconfig-0da8c129dc27e70770c3247c44988bbf0af6b1af.tar
nvim-lspconfig-0da8c129dc27e70770c3247c44988bbf0af6b1af.tar.gz
nvim-lspconfig-0da8c129dc27e70770c3247c44988bbf0af6b1af.tar.bz2
nvim-lspconfig-0da8c129dc27e70770c3247c44988bbf0af6b1af.tar.lz
nvim-lspconfig-0da8c129dc27e70770c3247c44988bbf0af6b1af.tar.xz
nvim-lspconfig-0da8c129dc27e70770c3247c44988bbf0af6b1af.tar.zst
nvim-lspconfig-0da8c129dc27e70770c3247c44988bbf0af6b1af.zip
fix(denols): ignore virtual text error #1995
If you open a file and immediately try to go to definition this error happens: ``` {["error"]={["message"]="Method not found: deno/virtualTextDocument",["code"]="-32601"}} {["error"]={["message"]="Method not found: deno/virtualTextDocument",["code"]="-32601"}} {["error"]={["code"]="-32601",["message"]="Method not found: deno/virtualTextDocument"}} {["error"]={["code"]="-32601",["message"]="Method not found: deno/virtualTextDocument"}} ``` Seems to be a race condition where the virtual text handling is not ready yet. Because this error is unhelpful and the gotodefinition works normally after a couple of seconds, just ignore it.
Diffstat (limited to 'lua/lspconfig/server_configurations/denols.lua')
-rw-r--r--lua/lspconfig/server_configurations/denols.lua28
1 files changed, 17 insertions, 11 deletions
diff --git a/lua/lspconfig/server_configurations/denols.lua b/lua/lspconfig/server_configurations/denols.lua
index 315ac9ba..6602d9e4 100644
--- a/lua/lspconfig/server_configurations/denols.lua
+++ b/lua/lspconfig/server_configurations/denols.lua
@@ -18,19 +18,25 @@ local function virtual_text_document_handler(uri, result)
end
for client_id, res in pairs(result) do
- local lines = vim.split(res.result, '\n')
- local bufnr = vim.uri_to_bufnr(uri)
+ -- Error might be present because of race, deno server will eventually send a result. #1995
+ if res.error ~= nil then
+ require('vim.lsp.log').warn('deno/virtual_text_document handler failed (might be a temporary issue), error: '
+ .. tostring(res.error))
+ else
+ local lines = vim.split(res.result, '\n')
+ local bufnr = vim.uri_to_bufnr(uri)
- local current_buf = vim.api.nvim_buf_get_lines(bufnr, 0, -1, false)
- if #current_buf ~= 0 then
- return nil
- end
+ local current_buf = vim.api.nvim_buf_get_lines(bufnr, 0, -1, false)
+ if #current_buf ~= 0 then
+ return nil
+ end
- vim.api.nvim_buf_set_lines(bufnr, 0, -1, nil, lines)
- vim.api.nvim_buf_set_option(bufnr, 'readonly', true)
- vim.api.nvim_buf_set_option(bufnr, 'modified', false)
- vim.api.nvim_buf_set_option(bufnr, 'modifiable', false)
- lsp.buf_attach_client(bufnr, client_id)
+ vim.api.nvim_buf_set_lines(bufnr, 0, -1, nil, lines)
+ vim.api.nvim_buf_set_option(bufnr, 'readonly', true)
+ vim.api.nvim_buf_set_option(bufnr, 'modified', false)
+ vim.api.nvim_buf_set_option(bufnr, 'modifiable', false)
+ lsp.buf_attach_client(bufnr, client_id)
+ end
end
end