diff options
| author | sigmaSd <bedisnbiba@gmail.com> | 2022-07-14 08:43:22 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-07-14 00:43:22 -0700 |
| commit | 0da8c129dc27e70770c3247c44988bbf0af6b1af (patch) | |
| tree | dad3f862eb4f2e978a534c9d8d35f711af3cd156 /lua/lspconfig/server_configurations/denols.lua | |
| parent | docs: update server_configurations.md (diff) | |
| download | nvim-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.lua | 28 |
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 |
