diff options
| author | Andrej Benz <hello@benz.dev> | 2020-12-11 09:26:34 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-12-11 09:26:34 +0100 |
| commit | b7612bafe4e06972a15075e1dbc5e7c3f926ea91 (patch) | |
| tree | 48d95e3c9e2c5dccf478f5fe89f624829f273094 /lua | |
| parent | changed filepath (diff) | |
| parent | Merge pull request #438 from HiPhish/kotlin (diff) | |
| download | nvim-lspconfig-b7612bafe4e06972a15075e1dbc5e7c3f926ea91.tar nvim-lspconfig-b7612bafe4e06972a15075e1dbc5e7c3f926ea91.tar.gz nvim-lspconfig-b7612bafe4e06972a15075e1dbc5e7c3f926ea91.tar.bz2 nvim-lspconfig-b7612bafe4e06972a15075e1dbc5e7c3f926ea91.tar.lz nvim-lspconfig-b7612bafe4e06972a15075e1dbc5e7c3f926ea91.tar.xz nvim-lspconfig-b7612bafe4e06972a15075e1dbc5e7c3f926ea91.tar.zst nvim-lspconfig-b7612bafe4e06972a15075e1dbc5e7c3f926ea91.zip | |
Merge branch 'master' into master
Diffstat (limited to 'lua')
| -rw-r--r-- | lua/lspconfig.lua | 83 | ||||
| -rwxr-xr-x | lua/lspconfig/als.lua (renamed from lua/nvim_lsp/als.lua) | 6 | ||||
| -rw-r--r-- | lua/lspconfig/angularls.lua | 72 | ||||
| -rw-r--r-- | lua/lspconfig/bashls.lua (renamed from lua/nvim_lsp/bashls.lua) | 4 | ||||
| -rw-r--r-- | lua/lspconfig/ccls.lua (renamed from lua/nvim_lsp/ccls.lua) | 4 | ||||
| -rw-r--r-- | lua/lspconfig/clangd.lua (renamed from lua/nvim_lsp/clangd.lua) | 4 | ||||
| -rw-r--r-- | lua/lspconfig/clojure_lsp.lua (renamed from lua/nvim_lsp/clojure_lsp.lua) | 4 | ||||
| -rwxr-xr-x | lua/lspconfig/cmake.lua (renamed from lua/nvim_lsp/cmake.lua) | 4 | ||||
| -rw-r--r-- | lua/lspconfig/codeqlls.lua (renamed from lua/nvim_lsp/codeqlls.lua) | 4 | ||||
| -rw-r--r-- | lua/lspconfig/configs.lua (renamed from lua/nvim_lsp/configs.lua) | 31 | ||||
| -rw-r--r-- | lua/lspconfig/cssls.lua (renamed from lua/nvim_lsp/cssls.lua) | 4 | ||||
| -rw-r--r-- | lua/lspconfig/dartls.lua (renamed from lua/nvim_lsp/dartls.lua) | 16 | ||||
| -rw-r--r-- | lua/lspconfig/diagnosticls.lua (renamed from lua/nvim_lsp/diagnosticls.lua) | 4 | ||||
| -rw-r--r-- | lua/lspconfig/dockerls.lua (renamed from lua/nvim_lsp/dockerls.lua) | 4 | ||||
| -rw-r--r-- | lua/lspconfig/efm.lua (renamed from lua/nvim_lsp/efm.lua) | 4 | ||||
| -rw-r--r-- | lua/lspconfig/elixirls.lua (renamed from lua/nvim_lsp/elixirls.lua) | 6 | ||||
| -rw-r--r-- | lua/lspconfig/elmls.lua (renamed from lua/nvim_lsp/elmls.lua) | 4 | ||||
| -rw-r--r-- | lua/lspconfig/flow.lua (renamed from lua/nvim_lsp/flow.lua) | 4 | ||||
| -rw-r--r-- | lua/lspconfig/fortls.lua (renamed from lua/nvim_lsp/fortls.lua) | 4 | ||||
| -rw-r--r-- | lua/lspconfig/gdscript.lua (renamed from lua/nvim_lsp/gdscript.lua) | 4 | ||||
| -rw-r--r-- | lua/lspconfig/ghcide.lua (renamed from lua/nvim_lsp/ghcide.lua) | 4 | ||||
| -rw-r--r-- | lua/lspconfig/gopls.lua (renamed from lua/nvim_lsp/gopls.lua) | 4 | ||||
| -rw-r--r-- | lua/lspconfig/health.lua (renamed from lua/nvim_lsp/health.lua) | 2 | ||||
| -rw-r--r-- | lua/lspconfig/hie.lua (renamed from lua/nvim_lsp/hie.lua) | 4 | ||||
| -rw-r--r-- | lua/lspconfig/hls.lua (renamed from lua/nvim_lsp/hls.lua) | 4 | ||||
| -rw-r--r-- | lua/lspconfig/html.lua (renamed from lua/nvim_lsp/html.lua) | 4 | ||||
| -rw-r--r-- | lua/lspconfig/intelephense.lua (renamed from lua/nvim_lsp/intelephense.lua) | 4 | ||||
| -rw-r--r-- | lua/lspconfig/jdtls.lua (renamed from lua/nvim_lsp/jdtls.lua) | 22 | ||||
| -rw-r--r-- | lua/lspconfig/jedi_language_server.lua (renamed from lua/nvim_lsp/jedi_language_server.lua) | 2 | ||||
| -rw-r--r-- | lua/lspconfig/jsonls.lua (renamed from lua/nvim_lsp/jsonls.lua) | 4 | ||||
| -rw-r--r-- | lua/lspconfig/julials.lua (renamed from lua/nvim_lsp/julials.lua) | 6 | ||||
| -rw-r--r-- | lua/lspconfig/kotlin_language_server.lua (renamed from lua/nvim_lsp/kotlin_language_server.lua) | 28 | ||||
| -rw-r--r-- | lua/lspconfig/leanls.lua (renamed from lua/nvim_lsp/leanls.lua) | 4 | ||||
| -rw-r--r-- | lua/lspconfig/metals.lua (renamed from lua/nvim_lsp/metals.lua) | 4 | ||||
| -rw-r--r-- | lua/lspconfig/nimls.lua (renamed from lua/nvim_lsp/nimls.lua) | 4 | ||||
| -rw-r--r-- | lua/lspconfig/ocamlls.lua (renamed from lua/nvim_lsp/ocamlls.lua) | 4 | ||||
| -rw-r--r-- | lua/lspconfig/ocamllsp.lua (renamed from lua/nvim_lsp/ocamllsp.lua) | 4 | ||||
| -rw-r--r-- | lua/lspconfig/omnisharp.lua | 4 | ||||
| -rw-r--r-- | lua/lspconfig/purescriptls.lua (renamed from lua/nvim_lsp/purescriptls.lua) | 9 | ||||
| -rw-r--r-- | lua/lspconfig/pyls.lua (renamed from lua/nvim_lsp/pyls.lua) | 2 | ||||
| -rw-r--r-- | lua/lspconfig/pyls_ms.lua (renamed from lua/nvim_lsp/pyls_ms.lua) | 8 | ||||
| -rw-r--r-- | lua/lspconfig/pyright.lua | 41 | ||||
| -rw-r--r-- | lua/lspconfig/r_language_server.lua (renamed from lua/nvim_lsp/r_language_server.lua) | 4 | ||||
| -rw-r--r-- | lua/lspconfig/rls.lua (renamed from lua/nvim_lsp/rls.lua) | 4 | ||||
| -rw-r--r-- | lua/lspconfig/rnix.lua (renamed from lua/nvim_lsp/rnix.lua) | 4 | ||||
| -rw-r--r-- | lua/lspconfig/rome.lua (renamed from lua/nvim_lsp/rome.lua) | 4 | ||||
| -rw-r--r-- | lua/lspconfig/rust_analyzer.lua (renamed from lua/nvim_lsp/rust_analyzer.lua) | 4 | ||||
| -rw-r--r-- | lua/lspconfig/scry.lua (renamed from lua/nvim_lsp/scry.lua) | 4 | ||||
| -rw-r--r-- | lua/lspconfig/solargraph.lua (renamed from lua/nvim_lsp/solargraph.lua) | 4 | ||||
| -rw-r--r-- | lua/lspconfig/sourcekit.lua (renamed from lua/nvim_lsp/sourcekit.lua) | 6 | ||||
| -rw-r--r-- | lua/lspconfig/sqlls.lua (renamed from lua/nvim_lsp/sqlls.lua) | 6 | ||||
| -rw-r--r-- | lua/lspconfig/sumneko_lua.lua (renamed from lua/nvim_lsp/sumneko_lua.lua) | 6 | ||||
| -rw-r--r-- | lua/lspconfig/terraformls.lua (renamed from lua/nvim_lsp/terraformls.lua) | 6 | ||||
| -rw-r--r-- | lua/lspconfig/texlab.lua (renamed from lua/nvim_lsp/texlab.lua) | 4 | ||||
| -rw-r--r-- | lua/lspconfig/tsserver.lua (renamed from lua/nvim_lsp/tsserver.lua) | 4 | ||||
| -rw-r--r-- | lua/lspconfig/util.lua (renamed from lua/nvim_lsp/util.lua) | 6 | ||||
| -rw-r--r-- | lua/lspconfig/vimls.lua (renamed from lua/nvim_lsp/vimls.lua) | 4 | ||||
| -rw-r--r-- | lua/lspconfig/vuels.lua (renamed from lua/nvim_lsp/vuels.lua) | 4 | ||||
| -rw-r--r-- | lua/lspconfig/yamlls.lua (renamed from lua/nvim_lsp/yamlls.lua) | 4 | ||||
| -rw-r--r-- | lua/nvim_lsp.lua | 85 | ||||
| -rw-r--r-- | lua/nvim_lsp/zls.lua | 22 |
61 files changed, 401 insertions, 226 deletions
diff --git a/lua/lspconfig.lua b/lua/lspconfig.lua new file mode 100644 index 00000000..cc9b38bc --- /dev/null +++ b/lua/lspconfig.lua @@ -0,0 +1,83 @@ +local configs = require 'lspconfig/configs' + +local M = { + util = require 'lspconfig/util'; +} + +function M.available_servers() + return vim.tbl_keys(configs) +end + +function M.installable_servers() + local res = {} + for k, v in pairs(configs) do + if v.install then table.insert(res, k) end + end + return res +end + +M._root = {} +-- Called from plugin/lspconfig.vim because it requires knowing that the last +-- script in scriptnames to be executed is lspconfig. +function M._root._setup() + M._root.commands = { + LspInstall = { + function(name) + if configs[name] == nil then + pcall(require('lspconfig/'..name)) + end + local config = configs[name] + if not config then + return print("Invalid server name:", name) + end + if not config.install then + return print(name, "can't be automatically installed (yet)") + end + if config.install_info().is_installed then + return print(name, "is already installed") + end + config.install() + end; + "-nargs=1"; + "-complete=custom,v:lua.lsp_complete_installable_servers"; + description = '`:LspInstall {name}` installs a server under stdpath("cache")/lspconfig/{name}'; + }; + LspInstallInfo = { + function(name) + if name == nil then + local res = {} + for k, v in pairs(configs) do + if v.install_info then + res[k] = v.install_info() + end + end + return print(vim.inspect(res)) + end + if configs[name] == nil then + pcall(require('lspconfig/'..name)) + end + local config = configs[name] + if not config then + return print("Invalid server name:", name) + end + return print(vim.inspect(config.install_info())) + end; + "-nargs=?"; + "-complete=custom,v:lua.lsp_complete_servers"; + description = 'Print installation info for {name} if one is specified, or all installable servers.'; + }; + }; + + M.util.create_module_commands("_root", M._root.commands) +end + +local mt = {} +function mt:__index(k) + if configs[k] == nil then + require('lspconfig/'..k) + end + return configs[k] +end + +return setmetatable(M, mt) +-- vim:et ts=2 sw=2 diff --git a/lua/nvim_lsp/als.lua b/lua/lspconfig/als.lua index 60605718..c5c4a116 100755 --- a/lua/nvim_lsp/als.lua +++ b/lua/lspconfig/als.lua @@ -1,5 +1,5 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' local server_name = 'als' local bin_name = 'ada_language_server' @@ -83,7 +83,7 @@ Ada language server. Use `LspInstall als` to install it. Can be configured by passing a "settings" object to `als.setup{}`: ```lua -require('nvim_lsp').als.setup{ +require('lspconfig').als.setup{ settings = { ada = { projectFile = "project.gpr"; diff --git a/lua/lspconfig/angularls.lua b/lua/lspconfig/angularls.lua new file mode 100644 index 00000000..f579909f --- /dev/null +++ b/lua/lspconfig/angularls.lua @@ -0,0 +1,72 @@ +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' + +local server_name = 'angularls' +local bin_name = server_name +local install_loc = util.base_install_dir .. '/' .. server_name +local script_loc = install_loc .. '/node_modules/@angular/language-server/index.js' +local bin_loc = install_loc .. '/node_modules/.bin/angularls' + +local installer = util.npm_installer { + server_name = server_name; + packages = { '@angular/language-server' }; + binaries = { bin_name }; + -- angular-language-service doesn't expose a binary, so we create an execution wrapper. + post_install_script = + 'echo "#! /bin/sh\n' .. 'node ' .. script_loc .. ' \\$*' .. '" > ' .. bin_loc .. '\n' .. + 'chmod +x ' .. bin_loc; +} + +-- Angular requires a node_modules directory to probe for @angular/language-service and typescript +-- in order to use your projects configured versions. +-- This defaults to the vim cwd, but will get overwritten by the resolved root of the file. +local function get_probe_dir(root_dir) + local project_root = util.find_node_modules_ancestor(root_dir) + + return project_root and (project_root .. '/node_modules') or '' +end + +local default_probe_dir = get_probe_dir(vim.fn.getcwd()) + +configs[server_name] = { + default_config = { + cmd = { + bin_loc, + '--stdio', + '--tsProbeLocations', default_probe_dir, + '--ngProbeLocations', default_probe_dir + }; + filetypes = {'typescript', 'html', 'typescriptreact', 'typescript.tsx'}; + -- Check for angular.json or .git first since that is the root of the project. + -- Don't check for tsconfig.json or package.json since there are multiple of these + -- in an angular monorepo setup. + root_dir = util.root_pattern('angular.json', '.git'); + }; + on_new_config = function(new_config, new_root_dir) + local new_probe_dir = get_probe_dir(new_root_dir) + + -- We need to check our probe directories because they may have changed. + new_config.cmd = { + bin_loc, + '--stdio', + '--tsProbeLocations', new_probe_dir, + '--ngProbeLocations', new_probe_dir + } + end; + docs = { + description = [[ +https://github.com/angular/vscode-ng-language-service + +`angular-language-server` can be installed via `:LspInstall angularls` + +If you prefer to install this yourself you can through npm `npm install @angular/language-server`. +Be aware there is no global binary and must be run via `node_modules/@angular/language-server/index.js` + ]]; + default_config = { + root_dir = [[root_pattern("angular.json", ".git")]]; + }; + } +} + +configs[server_name].install = installer.install +configs[server_name].install_info = installer.info diff --git a/lua/nvim_lsp/bashls.lua b/lua/lspconfig/bashls.lua index 0bc9604c..59b21079 100644 --- a/lua/nvim_lsp/bashls.lua +++ b/lua/lspconfig/bashls.lua @@ -1,5 +1,5 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' local server_name = "bashls" local bin_name = "bash-language-server" diff --git a/lua/nvim_lsp/ccls.lua b/lua/lspconfig/ccls.lua index 32cc30e9..d167249d 100644 --- a/lua/nvim_lsp/ccls.lua +++ b/lua/lspconfig/ccls.lua @@ -1,5 +1,5 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' configs.ccls = { default_config = { diff --git a/lua/nvim_lsp/clangd.lua b/lua/lspconfig/clangd.lua index f369febb..d165edbb 100644 --- a/lua/nvim_lsp/clangd.lua +++ b/lua/lspconfig/clangd.lua @@ -1,5 +1,5 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' -- https://clangd.llvm.org/extensions.html#switch-between-sourceheader local function switch_source_header(bufnr) diff --git a/lua/nvim_lsp/clojure_lsp.lua b/lua/lspconfig/clojure_lsp.lua index f314b309..f1ec6932 100644 --- a/lua/nvim_lsp/clojure_lsp.lua +++ b/lua/lspconfig/clojure_lsp.lua @@ -1,5 +1,5 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' configs.clojure_lsp = { default_config = { diff --git a/lua/nvim_lsp/cmake.lua b/lua/lspconfig/cmake.lua index b47d23a2..9dbcf717 100755 --- a/lua/nvim_lsp/cmake.lua +++ b/lua/lspconfig/cmake.lua @@ -1,5 +1,5 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' configs.cmake = { default_config = { diff --git a/lua/nvim_lsp/codeqlls.lua b/lua/lspconfig/codeqlls.lua index 613d551e..ffe08df4 100644 --- a/lua/nvim_lsp/codeqlls.lua +++ b/lua/lspconfig/codeqlls.lua @@ -1,5 +1,5 @@ -local configs = require "nvim_lsp/configs" -local util = require "nvim_lsp/util" +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' local server_name = "codeqlls" diff --git a/lua/nvim_lsp/configs.lua b/lua/lspconfig/configs.lua index 8bbc6082..1a844c85 100644 --- a/lua/nvim_lsp/configs.lua +++ b/lua/lspconfig/configs.lua @@ -1,4 +1,4 @@ -local util = require 'nvim_lsp/util' +local util = require 'lspconfig/util' local api, validate, lsp = vim.api, vim.validate, vim.lsp local tbl_extend = vim.tbl_extend @@ -33,26 +33,25 @@ function configs.__newindex(t, config_name, config_def) -- The config here is the one which will be instantiated for the new server, -- which is why this is a function, so that it can refer to the settings -- object on the server. - local function add_callbacks(config) - config.callbacks["window/logMessage"] = function(err, method, params, client_id) + local function add_handlers(config) + assert(not config.callbacks, "lsp.callbacks has been obsoleted. See here for more: https://github.com/neovim/neovim/pull/12655") + config.handlers["window/logMessage"] = function(err, method, params, client_id) if params and params.type <= config.log_level then -- TODO(ashkan) remove this after things have settled. - assert(lsp.callbacks, "Update to Nvim HEAD. This is an incompatible interface.") - assert(lsp.callbacks["window/logMessage"], "Callback for window/logMessage notification is not defined") - lsp.callbacks["window/logMessage"](err, method, params, client_id) + assert(lsp.handlers["window/logMessage"], "Handler for window/logMessage notification is not defined") + lsp.handlers["window/logMessage"](err, method, params, client_id) end end - config.callbacks["window/showMessage"] = function(err, method, params, client_id) + config.handlers["window/showMessage"] = function(err, method, params, client_id) if params and params.type <= config.message_level then -- TODO(ashkan) remove this after things have settled. - assert(lsp.callbacks and lsp.callbacks[method], "Update to Nvim HEAD. This is an incompatible interface.") - assert(lsp.callbacks["window/showMessage"], "Callback for window/showMessage notification is not defined") - lsp.callbacks["window/showMessage"](err, method, params, client_id) + assert(lsp.handlers["window/showMessage"], "Handler for window/showMessage notification is not defined") + lsp.handlers["window/showMessage"](err, method, params, client_id) end end - config.callbacks["workspace/configuration"] = function(err, method, params, client_id) + config.handlers["workspace/configuration"] = function(err, method, params, client_id) if err then error(tostring(err)) end if not params.items then return {} @@ -99,7 +98,7 @@ function configs.__newindex(t, config_name, config_def) trigger = "BufReadPost *" end api.nvim_command(string.format( - "autocmd %s lua require'nvim_lsp'[%q].manager.try_add()" + "autocmd %s lua require'lspconfig'[%q].manager.try_add()" , trigger , config.name )) @@ -124,12 +123,12 @@ function configs.__newindex(t, config_name, config_def) } }) - add_callbacks(new_config) + add_handlers(new_config) if config_def.on_new_config then - pcall(config_def.on_new_config, new_config) + pcall(config_def.on_new_config, new_config, _root_dir) end if config.on_new_config then - pcall(config.on_new_config, new_config) + pcall(config.on_new_config, new_config, _root_dir) end new_config.on_init = util.add_hook_after(new_config.on_init, function(client, _result) @@ -154,7 +153,7 @@ function configs.__newindex(t, config_name, config_def) M._setup_buffer(client.id) else api.nvim_command(string.format( - "autocmd BufEnter <buffer=%d> ++once lua require'nvim_lsp'[%q]._setup_buffer(%d)" + "autocmd BufEnter <buffer=%d> ++once lua require'lspconfig'[%q]._setup_buffer(%d)" , bufnr , config_name , client.id diff --git a/lua/nvim_lsp/cssls.lua b/lua/lspconfig/cssls.lua index 5517e7a1..7b50950a 100644 --- a/lua/nvim_lsp/cssls.lua +++ b/lua/lspconfig/cssls.lua @@ -1,5 +1,5 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' local server_name = "cssls" local bin_name = "css-languageserver" diff --git a/lua/nvim_lsp/dartls.lua b/lua/lspconfig/dartls.lua index 182204cf..d7ca9458 100644 --- a/lua/nvim_lsp/dartls.lua +++ b/lua/lspconfig/dartls.lua @@ -1,5 +1,5 @@ -local nvim_lsp = require 'nvim_lsp' -local configs = require 'nvim_lsp/configs' +local util = require 'lspconfig/util' +local configs = require 'lspconfig/configs' local server_name = "dartls" local bin_name = "dart" @@ -31,13 +31,13 @@ configs[server_name] = { default_config = { cmd = {bin_name, analysis_server_snapshot_path(), "--lsp"}; filetypes = {"dart"}; - root_dir = nvim_lsp.util.root_pattern("pubspec.yaml"); + root_dir = util.root_pattern("pubspec.yaml"); init_options = { - onlyAnalyzeProjectsWithOpenFiles = "false", - suggestFromUnimportedLibraries = "true", - closingLabels = "true", - outline = "true", - flutterOutline= "false" + onlyAnalyzeProjectsWithOpenFiles = false, + suggestFromUnimportedLibraries = true, + closingLabels = false, + outline = false, + flutterOutline = false }; }; docs = { diff --git a/lua/nvim_lsp/diagnosticls.lua b/lua/lspconfig/diagnosticls.lua index 4bdd5226..c4f26220 100644 --- a/lua/nvim_lsp/diagnosticls.lua +++ b/lua/lspconfig/diagnosticls.lua @@ -1,5 +1,5 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' local server_name = "diagnosticls" local bin_name = "diagnostic-languageserver" diff --git a/lua/nvim_lsp/dockerls.lua b/lua/lspconfig/dockerls.lua index 941d2c84..572e4701 100644 --- a/lua/nvim_lsp/dockerls.lua +++ b/lua/lspconfig/dockerls.lua @@ -1,5 +1,5 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' local server_name = "dockerls" local bin_name = "docker-langserver" diff --git a/lua/nvim_lsp/efm.lua b/lua/lspconfig/efm.lua index 621d2be1..d4fc88ac 100644 --- a/lua/nvim_lsp/efm.lua +++ b/lua/lspconfig/efm.lua @@ -1,5 +1,5 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' local server_name = "efm" local bin_name = "efm-langserver" diff --git a/lua/nvim_lsp/elixirls.lua b/lua/lspconfig/elixirls.lua index d0a2fbd6..fcd91a04 100644 --- a/lua/nvim_lsp/elixirls.lua +++ b/lua/lspconfig/elixirls.lua @@ -1,5 +1,5 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' local server_name = "elixirls" local bin_name = "elixir-ls" @@ -90,7 +90,7 @@ This language server does not provide a global binary, but must be installed man Fetching the elixir-ls repository from GitHub, compiling it and then installing it. ```lua -require'nvim_lsp'.elixirls.setup{ +require'lspconfig'.elixirls.setup{ -- Unix cmd = { "path/to/language_server.sh" }; -- Windows diff --git a/lua/nvim_lsp/elmls.lua b/lua/lspconfig/elmls.lua index 94e1b25d..c35824c4 100644 --- a/lua/nvim_lsp/elmls.lua +++ b/lua/lspconfig/elmls.lua @@ -1,5 +1,5 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' local lsp = vim.lsp local api = vim.api diff --git a/lua/nvim_lsp/flow.lua b/lua/lspconfig/flow.lua index 998ecb89..5e0abab3 100644 --- a/lua/nvim_lsp/flow.lua +++ b/lua/lspconfig/flow.lua @@ -1,5 +1,5 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' configs.flow = { default_config = { diff --git a/lua/nvim_lsp/fortls.lua b/lua/lspconfig/fortls.lua index a94e4dd3..7a66c703 100644 --- a/lua/nvim_lsp/fortls.lua +++ b/lua/lspconfig/fortls.lua @@ -1,5 +1,5 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' configs.fortls = { default_config = { diff --git a/lua/nvim_lsp/gdscript.lua b/lua/lspconfig/gdscript.lua index e4dfb5c3..ecd3288f 100644 --- a/lua/nvim_lsp/gdscript.lua +++ b/lua/lspconfig/gdscript.lua @@ -1,5 +1,5 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' configs.gdscript = { default_config = { diff --git a/lua/nvim_lsp/ghcide.lua b/lua/lspconfig/ghcide.lua index ee801de6..c427d599 100644 --- a/lua/nvim_lsp/ghcide.lua +++ b/lua/lspconfig/ghcide.lua @@ -1,5 +1,5 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' configs.ghcide = { default_config = { diff --git a/lua/nvim_lsp/gopls.lua b/lua/lspconfig/gopls.lua index 53638e5f..08eacc15 100644 --- a/lua/nvim_lsp/gopls.lua +++ b/lua/lspconfig/gopls.lua @@ -1,5 +1,5 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' configs.gopls = { default_config = { diff --git a/lua/nvim_lsp/health.lua b/lua/lspconfig/health.lua index d0e5820e..3abab080 100644 --- a/lua/nvim_lsp/health.lua +++ b/lua/lspconfig/health.lua @@ -1,6 +1,6 @@ local M = {} function M.check_health() - local configs = require 'nvim_lsp/configs' + local configs = require 'lspconfig/configs' for _, top_level_config in pairs(configs) do -- If users execute `:LspInstall` or `:LspInstallInfo`, diff --git a/lua/nvim_lsp/hie.lua b/lua/lspconfig/hie.lua index ef3b0d92..f57326dc 100644 --- a/lua/nvim_lsp/hie.lua +++ b/lua/lspconfig/hie.lua @@ -1,5 +1,5 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' configs.hie = { default_config = { diff --git a/lua/nvim_lsp/hls.lua b/lua/lspconfig/hls.lua index a55294dc..9c29b82c 100644 --- a/lua/nvim_lsp/hls.lua +++ b/lua/lspconfig/hls.lua @@ -1,5 +1,5 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' configs.hls = { default_config = { diff --git a/lua/nvim_lsp/html.lua b/lua/lspconfig/html.lua index e8ccc0ac..a9636222 100644 --- a/lua/nvim_lsp/html.lua +++ b/lua/lspconfig/html.lua @@ -1,5 +1,5 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' local server_name = "html" local bin_name = "html-languageserver" diff --git a/lua/nvim_lsp/intelephense.lua b/lua/lspconfig/intelephense.lua index 07d7eb09..7e381349 100644 --- a/lua/nvim_lsp/intelephense.lua +++ b/lua/lspconfig/intelephense.lua @@ -1,5 +1,5 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' local server_name = "intelephense" local bin_name = "intelephense" diff --git a/lua/nvim_lsp/jdtls.lua b/lua/lspconfig/jdtls.lua index ed0f022d..0c900593 100644 --- a/lua/nvim_lsp/jdtls.lua +++ b/lua/lspconfig/jdtls.lua @@ -1,6 +1,6 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' -local callbacks = require 'vim.lsp.callbacks' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' +local handlers = require 'vim.lsp.handlers' local path = util.path local server_name = "jdtls" @@ -101,19 +101,29 @@ configs[server_name] = { jvm_args = {}; os_config = nil; }; - callbacks = { + handlers = { -- Due to an invalid protocol implementation in the jdtls we have to -- conform these to be spec compliant. -- https://github.com/eclipse/eclipse.jdt.ls/issues/376 + -- Command in org.eclipse.lsp5j -> https://github.com/eclipse/lsp4j/blob/master/org.eclipse.lsp4j/src/main/xtend-gen/org/eclipse/lsp4j/Command.java + -- CodeAction in org.eclipse.lsp4j -> https://github.com/eclipse/lsp4j/blob/master/org.eclipse.lsp4j/src/main/xtend-gen/org/eclipse/lsp4j/CodeAction.java + -- Command in LSP -> https://microsoft.github.io/language-server-protocol/specification#command + -- CodeAction in LSP -> https://microsoft.github.io/language-server-protocol/specification#textDocument_codeAction ['textDocument/codeAction'] = function(a, b, actions) for _,action in ipairs(actions) do -- TODO: (steelsojka) Handle more than one edit? + -- if command is string, then 'ation' is Command in java format, + -- then we add 'edit' property to change to CodeAction in LSP and 'edit' will be executed first if action.command == 'java.apply.workspaceEdit' then - action.edit = action.arguments[1] + action.edit = action.edit or action.arguments[1] + -- if command is table, then 'action' is CodeAction in java format + -- then we add 'edit' property to change to CodeAction in LSP and 'edit' will be executed first + elseif type(action.command) == 'table' and action.command.command == 'java.apply.workspaceEdit' then + action.edit = action.edit or action.command.arguments[1] end end - callbacks['textDocument/codeAction'](a, b, actions) + handlers['textDocument/codeAction'](a, b, actions) end }; }; diff --git a/lua/nvim_lsp/jedi_language_server.lua b/lua/lspconfig/jedi_language_server.lua index e077bbbd..5fd6cbfc 100644 --- a/lua/nvim_lsp/jedi_language_server.lua +++ b/lua/lspconfig/jedi_language_server.lua @@ -1,4 +1,4 @@ -local configs = require 'nvim_lsp/configs' +local configs = require 'lspconfig/configs' configs.jedi_language_server = { default_config = { diff --git a/lua/nvim_lsp/jsonls.lua b/lua/lspconfig/jsonls.lua index f384c0d9..616a0bbe 100644 --- a/lua/nvim_lsp/jsonls.lua +++ b/lua/lspconfig/jsonls.lua @@ -1,5 +1,5 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' local server_name = "jsonls" local bin_name = "vscode-json-languageserver" diff --git a/lua/nvim_lsp/julials.lua b/lua/lspconfig/julials.lua index 6c30e8bd..f74ce7b7 100644 --- a/lua/nvim_lsp/julials.lua +++ b/lua/lspconfig/julials.lua @@ -1,5 +1,5 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' local environment_directory = util.path.join(util.base_install_dir, "julials") @@ -36,7 +36,7 @@ julia --project=]] .. environment_directory .. [[ -e 'using Pkg; Pkg.add("Langua ``` If you want to install the LanguageServer manually, you will have to ensure that the Julia environment is stored in this location: ```vim -:lua print(require'nvim_lsp'.util.path.join(require'nvim_lsp'.util.base_install_dir, "julials")) +:lua print(require'lspconfig'.util.path.join(require'lspconfig'.util.base_install_dir, "julials")) ``` ]]; }; diff --git a/lua/nvim_lsp/kotlin_language_server.lua b/lua/lspconfig/kotlin_language_server.lua index 15fb995a..793fc062 100644 --- a/lua/nvim_lsp/kotlin_language_server.lua +++ b/lua/lspconfig/kotlin_language_server.lua @@ -6,13 +6,34 @@ --- https://github.com/udalov/kotlin-vim (recommended) --- Note that there is no LICENSE specified yet. -local util = require 'nvim_lsp/util' -local configs = require 'nvim_lsp/configs' +local util = require 'lspconfig/util' +local configs = require 'lspconfig/configs' + +local bin_name = "kotlin-language-server" +if vim.fn.has('win32') == 1 then + bin_name = bin_name..".bat" +end + + +--- The presence of one of these files indicates a project root directory +-- +-- These are configuration files for the various build systems supported by +-- Kotlin. I am not sure whether the language server supports Ant projects, +-- but I'm keeping it here as well since Ant does support Kotlin. +local root_files = { + 'build.xml', -- Ant + 'pom.xml', -- Maven + 'settings.gradle', -- Gradle (mutli-project) + 'settings.gradle.kts', -- Gradle (mutli-project) + 'build.gradle', -- Gradle + 'build.gradle.kts', -- Gradle +} configs.kotlin_language_server = { default_config = { filetypes = { "kotlin" }; - root_dir = util.root_pattern("settings.gradle"); + root_dir = util.root_pattern(unpack(root_files)); + cmd = { bin_name }; }; docs = { package_json = "https://raw.githubusercontent.com/fwcd/vscode-kotlin/master/package.json"; @@ -27,6 +48,7 @@ configs.kotlin_language_server = { ]]; default_config = { root_dir = [[root_pattern("settings.gradle")]]; + cmd = {"kotlin-language-server"}; capabilities = [[ smart code completion, diagnostics, diff --git a/lua/nvim_lsp/leanls.lua b/lua/lspconfig/leanls.lua index 894f318b..cd6f4644 100644 --- a/lua/nvim_lsp/leanls.lua +++ b/lua/lspconfig/leanls.lua @@ -1,5 +1,5 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' configs.leanls = { default_config = { diff --git a/lua/nvim_lsp/metals.lua b/lua/lspconfig/metals.lua index 35b1fe5b..12e244bb 100644 --- a/lua/nvim_lsp/metals.lua +++ b/lua/lspconfig/metals.lua @@ -1,5 +1,5 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' local server_name = "metals" local bin_name = "metals" diff --git a/lua/nvim_lsp/nimls.lua b/lua/lspconfig/nimls.lua index 5e91c760..f71c60f9 100644 --- a/lua/nvim_lsp/nimls.lua +++ b/lua/lspconfig/nimls.lua @@ -1,5 +1,5 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' configs.nimls = { default_config = { diff --git a/lua/nvim_lsp/ocamlls.lua b/lua/lspconfig/ocamlls.lua index 417529fa..05e71992 100644 --- a/lua/nvim_lsp/ocamlls.lua +++ b/lua/lspconfig/ocamlls.lua @@ -1,5 +1,5 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' local server_name = "ocamlls" local bin_name = "ocaml-language-server" diff --git a/lua/nvim_lsp/ocamllsp.lua b/lua/lspconfig/ocamllsp.lua index c029e427..9efc59b4 100644 --- a/lua/nvim_lsp/ocamllsp.lua +++ b/lua/lspconfig/ocamllsp.lua @@ -1,5 +1,5 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' configs.ocamllsp = { default_config = { diff --git a/lua/lspconfig/omnisharp.lua b/lua/lspconfig/omnisharp.lua index 49d2ce80..8c6866d6 100644 --- a/lua/lspconfig/omnisharp.lua +++ b/lua/lspconfig/omnisharp.lua @@ -1,5 +1,5 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' local server_name = 'omnisharp' local bin_name = 'run' diff --git a/lua/nvim_lsp/purescriptls.lua b/lua/lspconfig/purescriptls.lua index 6a00caae..6bd9d5d3 100644 --- a/lua/nvim_lsp/purescriptls.lua +++ b/lua/lspconfig/purescriptls.lua @@ -1,8 +1,11 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' local server_name = "purescriptls" local bin_name = "purescript-language-server" +if vim.fn.has('win32') == 1 then + bin_name = bin_name..'.cmd' +end local installer = util.npm_installer { server_name = server_name; @@ -12,7 +15,7 @@ local installer = util.npm_installer { configs[server_name] = { default_config = { - cmd = {"purescript-language-server", "--stdio"}; + cmd = {bin_name, "--stdio"}; filetypes = {"purescript"}; root_dir = util.root_pattern("spago.dhall", "bower.json"); }; diff --git a/lua/nvim_lsp/pyls.lua b/lua/lspconfig/pyls.lua index 6d4aeb56..fef0749d 100644 --- a/lua/nvim_lsp/pyls.lua +++ b/lua/lspconfig/pyls.lua @@ -1,4 +1,4 @@ -local configs = require 'nvim_lsp/configs' +local configs = require 'lspconfig/configs' configs.pyls = { default_config = { diff --git a/lua/nvim_lsp/pyls_ms.lua b/lua/lspconfig/pyls_ms.lua index 6b66a600..517aede1 100644 --- a/lua/nvim_lsp/pyls_ms.lua +++ b/lua/lspconfig/pyls_ms.lua @@ -1,5 +1,5 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' local name = "pyls_ms" @@ -36,6 +36,10 @@ local function make_installer() error('Need ".NET Core" to install this.') return end + if not (util.has_bins("unzip")) and (vim.fn.has('mac') == 1 or vim.fn.has('unix') == 1) then + error('Need "unzip" to install this.') + return + end local system if vim.fn.has('mac') == 1 then diff --git a/lua/lspconfig/pyright.lua b/lua/lspconfig/pyright.lua new file mode 100644 index 00000000..d9552bfc --- /dev/null +++ b/lua/lspconfig/pyright.lua @@ -0,0 +1,41 @@ +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' + +local server_name = "pyright" +local bin_name = "pyright-langserver" +if vim.fn.has('win32') == 1 then + bin_name = bin_name..".cmd" +end + +local installer = util.npm_installer { + server_name = server_name; + packages = {server_name}; + binaries = {bin_name}; +} + +configs[server_name] = { + default_config = { + cmd = {bin_name, "--stdio"}; + filetypes = {"python"}; + root_dir = util.root_pattern(".git", "setup.py", "setup.cfg", "pyproject.toml", "requirements.txt"); + settings = { + python = { + analysis = { + autoSearchPaths = true; + useLibraryCodeForTypes = true; + }; + }; + }; + }; + docs = { + description = [[ +https://github.com/microsoft/pyright + +`pyright`, a static type checker and language server for python +]]; + }; +} + +configs[server_name].install = installer.install +configs[server_name].install_info = installer.info +-- vim:et ts=2 sw=2 diff --git a/lua/nvim_lsp/r_language_server.lua b/lua/lspconfig/r_language_server.lua index 91c619c2..d75da11f 100644 --- a/lua/nvim_lsp/r_language_server.lua +++ b/lua/lspconfig/r_language_server.lua @@ -1,5 +1,5 @@ -local util = require 'nvim_lsp/util' -local configs = require 'nvim_lsp/configs' +local util = require 'lspconfig/util' +local configs = require 'lspconfig/configs' configs.r_language_server = { default_config = { diff --git a/lua/nvim_lsp/rls.lua b/lua/lspconfig/rls.lua index bf02986b..a1b15d9f 100644 --- a/lua/nvim_lsp/rls.lua +++ b/lua/lspconfig/rls.lua @@ -1,5 +1,5 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' configs.rls = { default_config = { diff --git a/lua/nvim_lsp/rnix.lua b/lua/lspconfig/rnix.lua index 50acc2ec..deaeac98 100644 --- a/lua/nvim_lsp/rnix.lua +++ b/lua/lspconfig/rnix.lua @@ -1,5 +1,5 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' local name = "rnix" diff --git a/lua/nvim_lsp/rome.lua b/lua/lspconfig/rome.lua index 504a8bde..a8d813f2 100644 --- a/lua/nvim_lsp/rome.lua +++ b/lua/lspconfig/rome.lua @@ -1,5 +1,5 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' configs.rome = { default_config = { diff --git a/lua/nvim_lsp/rust_analyzer.lua b/lua/lspconfig/rust_analyzer.lua index f5f48f01..2d545517 100644 --- a/lua/nvim_lsp/rust_analyzer.lua +++ b/lua/lspconfig/rust_analyzer.lua @@ -1,5 +1,5 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' configs.rust_analyzer = { default_config = { diff --git a/lua/nvim_lsp/scry.lua b/lua/lspconfig/scry.lua index 6080f6c3..d2b5164e 100644 --- a/lua/nvim_lsp/scry.lua +++ b/lua/lspconfig/scry.lua @@ -1,5 +1,5 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' configs.scry = { default_config = { diff --git a/lua/nvim_lsp/solargraph.lua b/lua/lspconfig/solargraph.lua index ee023a1c..5aa2ec17 100644 --- a/lua/nvim_lsp/solargraph.lua +++ b/lua/lspconfig/solargraph.lua @@ -1,5 +1,5 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' local bin_name = "solargraph" if vim.fn.has('win32') == 1 then diff --git a/lua/nvim_lsp/sourcekit.lua b/lua/lspconfig/sourcekit.lua index e4dc0042..85714311 100644 --- a/lua/nvim_lsp/sourcekit.lua +++ b/lua/lspconfig/sourcekit.lua @@ -1,5 +1,5 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' configs.sourcekit = { default_config = { @@ -8,7 +8,7 @@ configs.sourcekit = { root_dir = util.root_pattern("Package.swift", ".git") }; docs = { - package_json = "https://raw.githubusercontent.com/apple/sourcekit-lsp/master/Editors/vscode/package.json"; + package_json = "https://raw.githubusercontent.com/apple/sourcekit-lsp/main/Editors/vscode/package.json"; description = [[ https://github.com/apple/sourcekit-lsp diff --git a/lua/nvim_lsp/sqlls.lua b/lua/lspconfig/sqlls.lua index b17bcbc6..aced4e02 100644 --- a/lua/nvim_lsp/sqlls.lua +++ b/lua/lspconfig/sqlls.lua @@ -1,5 +1,5 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' local server_name = "sqlls" local bin_name = "sql-language-server" @@ -35,7 +35,7 @@ https://github.com/joe-re/sql-language-server `cmd` value is **not set** by default. An installer is provided via the `:LspInstall` command that uses the *nvm_lsp node_modules* directory to find the sql-language-server executable. The `cmd` value can be overriden in the `setup` table; ```lua -require'nvim_lsp'.sqlls.setup{ +require'lspconfig'.sqlls.setup{ cmd = {"path/to/command", "up", "--method", "stdio"}; ... } diff --git a/lua/nvim_lsp/sumneko_lua.lua b/lua/lspconfig/sumneko_lua.lua index 129ad35f..3faca644 100644 --- a/lua/nvim_lsp/sumneko_lua.lua +++ b/lua/lspconfig/sumneko_lua.lua @@ -1,5 +1,5 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' local name = "sumneko_lua" local bin_name = "lua-language-server" @@ -114,7 +114,7 @@ guide](https://github.com/sumneko/lua-language-server/wiki/Build-and-Run-(Standa So you should set `cmd` yourself like this. ```lua -require'nvim_lsp'.sumneko_lua.setup{ +require'lspconfig'.sumneko_lua.setup{ cmd = {"path", "to", "cmd"}; ... } diff --git a/lua/nvim_lsp/terraformls.lua b/lua/lspconfig/terraformls.lua index 76b2c2d0..90c973dd 100644 --- a/lua/nvim_lsp/terraformls.lua +++ b/lua/lspconfig/terraformls.lua @@ -1,9 +1,9 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' configs.terraformls = { default_config = { - cmd = {"terraform-ls"}; + cmd = {"terraform-ls", "serve"}; filetypes = {"terraform"}; root_dir = util.root_pattern(".terraform", ".git"); }; diff --git a/lua/nvim_lsp/texlab.lua b/lua/lspconfig/texlab.lua index 695cdaaf..b6e08927 100644 --- a/lua/nvim_lsp/texlab.lua +++ b/lua/lspconfig/texlab.lua @@ -1,5 +1,5 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' local lsp = vim.lsp local texlab_build_status = vim.tbl_add_reverse_lookup { diff --git a/lua/nvim_lsp/tsserver.lua b/lua/lspconfig/tsserver.lua index 1bfc65f4..4afc6077 100644 --- a/lua/nvim_lsp/tsserver.lua +++ b/lua/lspconfig/tsserver.lua @@ -1,5 +1,5 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' local server_name = "tsserver" local bin_name = "typescript-language-server" diff --git a/lua/nvim_lsp/util.lua b/lua/lspconfig/util.lua index 7bff215f..0bf591ae 100644 --- a/lua/nvim_lsp/util.lua +++ b/lua/lspconfig/util.lua @@ -12,7 +12,7 @@ M.default_config = { message_level = lsp.protocol.MessageType.Warning; settings = vim.empty_dict(); init_options = vim.empty_dict(); - callbacks = {}; + handlers = {}; } function M.validate_bufnr(bufnr) @@ -111,7 +111,7 @@ function M.create_module_commands(module_name, commands) table.insert(parts, command_name) -- The command definition. table.insert(parts, - string.format("lua require'nvim_lsp'[%q].commands[%q][1](<f-args>)", module_name, command_name)) + string.format("lua require'lspconfig'[%q].commands[%q][1](<f-args>)", module_name, command_name)) api.nvim_command(table.concat(parts, " ")) end end @@ -343,7 +343,7 @@ local function zip_lists_to_map(a, b) return res end -local base_install_dir = M.path.join(fn.stdpath("cache"), "nvim_lsp") +local base_install_dir = M.path.join(fn.stdpath("cache"), "lspconfig") M.base_install_dir = base_install_dir function M.npm_installer(config) validate { diff --git a/lua/nvim_lsp/vimls.lua b/lua/lspconfig/vimls.lua index 9f715289..15e5fed1 100644 --- a/lua/nvim_lsp/vimls.lua +++ b/lua/lspconfig/vimls.lua @@ -1,5 +1,5 @@ -local configs = require "nvim_lsp/configs" -local util = require "nvim_lsp/util" +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' local server_name = "vimls" local bin_name = "vim-language-server" diff --git a/lua/nvim_lsp/vuels.lua b/lua/lspconfig/vuels.lua index 0118e3fd..4a8774bd 100644 --- a/lua/nvim_lsp/vuels.lua +++ b/lua/lspconfig/vuels.lua @@ -1,5 +1,5 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' local server_name = "vuels" local bin_name = "vls" diff --git a/lua/nvim_lsp/yamlls.lua b/lua/lspconfig/yamlls.lua index dcdb3ac3..787e8df3 100644 --- a/lua/nvim_lsp/yamlls.lua +++ b/lua/lspconfig/yamlls.lua @@ -1,5 +1,5 @@ -local configs = require 'nvim_lsp/configs' -local util = require 'nvim_lsp/util' +local configs = require 'lspconfig/configs' +local util = require 'lspconfig/util' local server_name = "yamlls" local bin_name = "yaml-language-server" diff --git a/lua/nvim_lsp.lua b/lua/nvim_lsp.lua index 2b9154ad..39ef0b2e 100644 --- a/lua/nvim_lsp.lua +++ b/lua/nvim_lsp.lua @@ -1,83 +1,2 @@ -local configs = require 'nvim_lsp/configs' - -local M = { - util = require 'nvim_lsp/util'; -} - -function M.available_servers() - return vim.tbl_keys(configs) -end - -function M.installable_servers() - local res = {} - for k, v in pairs(configs) do - if v.install then table.insert(res, k) end - end - return res -end - -M._root = {} --- Called from plugin/nvim_lsp.vim because it requires knowing that the last --- script in scriptnames to be executed is nvim_lsp. -function M._root._setup() - M._root.commands = { - LspInstall = { - function(name) - if configs[name] == nil then - pcall(require('nvim_lsp/'..name)) - end - local config = configs[name] - if not config then - return print("Invalid server name:", name) - end - if not config.install then - return print(name, "can't be automatically installed (yet)") - end - if config.install_info().is_installed then - return print(name, "is already installed") - end - config.install() - end; - "-nargs=1"; - "-complete=custom,v:lua.lsp_complete_installable_servers"; - description = '`:LspInstall {name}` installs a server under stdpath("cache")/nvim_lsp/{name}'; - }; - LspInstallInfo = { - function(name) - if name == nil then - local res = {} - for k, v in pairs(configs) do - if v.install_info then - res[k] = v.install_info() - end - end - return print(vim.inspect(res)) - end - if configs[name] == nil then - pcall(require('nvim_lsp/'..name)) - end - local config = configs[name] - if not config then - return print("Invalid server name:", name) - end - return print(vim.inspect(config.install_info())) - end; - "-nargs=?"; - "-complete=custom,v:lua.lsp_complete_servers"; - description = 'Print installation info for {name} if one is specified, or all installable servers.'; - }; - }; - - M.util.create_module_commands("_root", M._root.commands) -end - -local mt = {} -function mt:__index(k) - if configs[k] == nil then - require('nvim_lsp/'..k) - end - return configs[k] -end - -return setmetatable(M, mt) --- vim:et ts=2 sw=2 +local vim = vim +vim.api.nvim_command('echomsg "NOTICE: \\"nvim_lsp\\" module was renamed to \\"lspconfig\\". Update your config/plugins to require(\\"lspconfig\\") instead of require(\\"nvim_lsp\\")."') diff --git a/lua/nvim_lsp/zls.lua b/lua/nvim_lsp/zls.lua new file mode 100644 index 00000000..5f5742f7 --- /dev/null +++ b/lua/nvim_lsp/zls.lua @@ -0,0 +1,22 @@ +local configs = require 'nvim_lsp/configs' +local util = require 'nvim_lsp/util' + +configs.zls = { + default_config = { + cmd = {"zls"}; + filetypes = {"zig", "zir"}; + root_dir = function(fname) + return util.root_pattern("zls.json", ".git")(fname) or util.path.dirname(fname) + end + }; + docs = { + description = [[ + https://github.com/zigtools/zls + + `Zig LSP implementation + Zig Language Server`. + ]]; + default_config = { + root_dir = [[util.root_pattern("zls.json", ".git") or current_file_dirname]]; + }; + }; +}; |
