diff options
| author | Ryo Kitagawa <kitadrum50@gmail.com> | 2021-03-07 09:45:56 +0900 |
|---|---|---|
| committer | Ryo Kitagawa <kitadrum50@gmail.com> | 2021-03-07 09:45:56 +0900 |
| commit | 8caa5fe3122cabaf2f1b32833e601b64f28d6784 (patch) | |
| tree | 2f6b648dc35c203f759212a3d5945f410a8f1fa4 /lua | |
| parent | Fix denols definition in deno v1.7.5 (diff) | |
| download | nvim-lspconfig-8caa5fe3122cabaf2f1b32833e601b64f28d6784.tar nvim-lspconfig-8caa5fe3122cabaf2f1b32833e601b64f28d6784.tar.gz nvim-lspconfig-8caa5fe3122cabaf2f1b32833e601b64f28d6784.tar.bz2 nvim-lspconfig-8caa5fe3122cabaf2f1b32833e601b64f28d6784.tar.lz nvim-lspconfig-8caa5fe3122cabaf2f1b32833e601b64f28d6784.tar.xz nvim-lspconfig-8caa5fe3122cabaf2f1b32833e601b64f28d6784.tar.zst nvim-lspconfig-8caa5fe3122cabaf2f1b32833e601b64f28d6784.zip | |
Fix denols references
Diffstat (limited to 'lua')
| -rw-r--r-- | lua/lspconfig/denols.lua | 39 |
1 files changed, 29 insertions, 10 deletions
diff --git a/lua/lspconfig/denols.lua b/lua/lspconfig/denols.lua index 2798ff1e..df8214b6 100644 --- a/lua/lspconfig/denols.lua +++ b/lua/lspconfig/denols.lua @@ -5,8 +5,7 @@ local lsp = vim.lsp local server_name = "denols" local function deno_uri_to_uri(uri) - -- 1.7.4 LS returns deno:///https/deno.land/std@0.85.0/http/server.ts - -- 1.7.5 LS returns deno:/https/deno.land/std%400.85.0/http/server.ts + -- denols returns deno:/https/deno.land/std%400.85.0/http/server.ts -- nvim-lsp only handles deno:// if string.sub(uri, 1, 6) == "deno:/" and string.sub(uri, 7, 7) ~= "/" then return string.gsub(uri, "^deno:/", "deno://", 1) @@ -15,8 +14,7 @@ local function deno_uri_to_uri(uri) end local function uri_to_deno_uri(uri) - -- 1.7.4 LS use deno:/// and nvim-lsp use deno:/// as buffer_uri, too. - -- 1.7.5 LS use deno:/ and nvim-lsp use deno:// as buffer_uri. + -- denols use deno:/ and nvim-lsp use deno:// as buffer_uri. -- When buffer_uri is deno://, change uri to deno:/. if string.sub(uri, 1, 7) == "deno://" and string.sub(uri, 8, 8) ~= "/" then return string.gsub(uri, "^deno://", "deno:/", 1) @@ -61,17 +59,19 @@ local function virtual_text_document(uri) virtual_text_document_handler(uri, result) end -local function definition_handler(err, method, result) +local function denols_handler(err, method, result) if not result or vim.tbl_isempty(result) then return nil end for _, res in pairs(result) do - if string.sub(res.targetUri, 1, 6) == "deno:/" then - virtual_text_document(res.targetUri) - res.targetUri = deno_uri_to_uri(res.targetUri) + local uri = res.uri or res.targetUri + if string.sub(uri, 1, 6) == "deno:/" then + virtual_text_document(uri) + res['uri'] = deno_uri_to_uri(uri) + res['targetUri'] = deno_uri_to_uri(uri) end end - lsp.handlers["textDocument/definition"](err, method, result) + lsp.handlers[method](err, method, result) end local function denols_definition() @@ -80,6 +80,17 @@ local function denols_definition() lsp.buf_request(0, "textDocument/definition", params) end +local function denols_references(context) + vim.validate { context = { context, 't', true } } + local params = lsp.util.make_position_params() + params.context = context or { + includeDeclaration = true; + } + params[vim.type_idx] = vim.types.dictionary + params.textDocument.uri = uri_to_deno_uri(params.textDocument.uri) + lsp.buf_request(0, 'textDocument/references', params) +end + configs[server_name] = { default_config = { cmd = {"deno", "lsp"}; @@ -91,7 +102,8 @@ configs[server_name] = { unstable = false; }; handlers = { - ["textDocument/definition"] = definition_handler; + ["textDocument/definition"] = denols_handler; + ["textDocument/references"] = denols_handler; }; }; commands = { @@ -99,6 +111,12 @@ configs[server_name] = { denols_definition; description = "Jump to definition. This handle deno:/ schema in deno:// buffer." }; + DenolsReferences = { + function() + denols_references({ includeDeclaration = true }) + end; + description = "List references. This handle deno:/ schema in deno:// buffer." + }; DenolsCache = { function() buf_cache(0) @@ -119,6 +137,7 @@ Deno's built-in language server } configs.denols.definition = denols_definition +configs.denols.references = denols_references configs.denols.buf_cache = buf_cache configs.denols.virtual_text_document = virtual_text_document -- vim:et ts=2 sw=2 |
