diff options
| author | sigmaSd <bedisnbiba@gmail.com> | 2022-08-23 15:41:07 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-08-23 07:41:07 -0700 |
| commit | 6e5f5d6e4b69e1463a4f894e1183a1ba04598eef (patch) | |
| tree | c05dbe5119eb5e455656b6f5956092848ef9b196 /lua | |
| parent | docs: update server_configurations.md (diff) | |
| download | nvim-lspconfig-6e5f5d6e4b69e1463a4f894e1183a1ba04598eef.tar nvim-lspconfig-6e5f5d6e4b69e1463a4f894e1183a1ba04598eef.tar.gz nvim-lspconfig-6e5f5d6e4b69e1463a4f894e1183a1ba04598eef.tar.bz2 nvim-lspconfig-6e5f5d6e4b69e1463a4f894e1183a1ba04598eef.tar.lz nvim-lspconfig-6e5f5d6e4b69e1463a4f894e1183a1ba04598eef.tar.xz nvim-lspconfig-6e5f5d6e4b69e1463a4f894e1183a1ba04598eef.tar.zst nvim-lspconfig-6e5f5d6e4b69e1463a4f894e1183a1ba04598eef.zip | |
feat(denols): only send lsp requests to deno server (#2055)
Diffstat (limited to 'lua')
| -rw-r--r-- | lua/lspconfig/server_configurations/denols.lua | 54 |
1 files changed, 26 insertions, 28 deletions
diff --git a/lua/lspconfig/server_configurations/denols.lua b/lua/lspconfig/server_configurations/denols.lua index bf91c706..e8e2688d 100644 --- a/lua/lspconfig/server_configurations/denols.lua +++ b/lua/lspconfig/server_configurations/denols.lua @@ -1,48 +1,39 @@ local util = require 'lspconfig.util' local lsp = vim.lsp -local function buf_cache(bufnr) +local function buf_cache(bufnr, client) local params = {} params['referrer'] = { uri = vim.uri_from_bufnr(bufnr) } params['uris'] = {} - lsp.buf_request(bufnr, 'deno/cache', params, function(_) end) + client.request_sync('deno/cache', params) end -local function virtual_text_document_handler(uri, result) - if not result then +local function virtual_text_document_handler(uri, res) + if not res then return nil end - for _, res in pairs(result) do - -- 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 lines = vim.split(res.result, '\n') + local bufnr = vim.uri_to_bufnr(uri) - 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) - 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) end -local function virtual_text_document(uri) +local function virtual_text_document(uri, client) local params = { textDocument = { uri = uri, }, } - local result = lsp.buf_request_sync(0, 'deno/virtualTextDocument', params) + local result = client.request_sync('deno/virtualTextDocument', params) virtual_text_document_handler(uri, result) end @@ -51,10 +42,11 @@ local function denols_handler(err, result, ctx) return nil end + local client = vim.lsp.get_client_by_id(ctx.client_id) for _, res in pairs(result) do local uri = res.uri or res.targetUri if uri:match '^deno:' then - virtual_text_document(uri) + virtual_text_document(uri, client) res['uri'] = uri res['targetUri'] = uri end @@ -86,7 +78,7 @@ return { ['textDocument/references'] = denols_handler, ['workspace/executeCommand'] = function(err, result, context) if context.params.command == 'deno.cache' then - buf_cache(context.bufnr) + buf_cache(context.bufnr, vim.lsp.get_client_by_id(context.client_id)) else lsp.handlers[context.method](err, result, context) end @@ -96,7 +88,13 @@ return { commands = { DenolsCache = { function() - buf_cache(0) + local clients = vim.lsp.get_active_clients() + for _, client in ipairs(clients) do + if client.name == 'denols' then + buf_cache(0, client) + break + end + end end, description = 'Cache a module and all of its dependencies.', }, |
