diff options
| author | William Boman <william@redwill.se> | 2021-11-06 16:01:31 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-11-06 16:01:31 +0100 |
| commit | b5059efeaadecbc96b042d0866e47f2fb3e7dff9 (patch) | |
| tree | f3fd452e6df1f98a682242cec9f261a1309ab9b6 | |
| parent | moved add-opens and add-modules java options before jar option (#242) (diff) | |
| download | mason-b5059efeaadecbc96b042d0866e47f2fb3e7dff9.tar mason-b5059efeaadecbc96b042d0866e47f2fb3e7dff9.tar.gz mason-b5059efeaadecbc96b042d0866e47f2fb3e7dff9.tar.bz2 mason-b5059efeaadecbc96b042d0866e47f2fb3e7dff9.tar.lz mason-b5059efeaadecbc96b042d0866e47f2fb3e7dff9.tar.xz mason-b5059efeaadecbc96b042d0866e47f2fb3e7dff9.tar.zst mason-b5059efeaadecbc96b042d0866e47f2fb3e7dff9.zip | |
add language aliases to :LspInstall (#232)
71 files changed, 177 insertions, 10 deletions
diff --git a/lua/nvim-lsp-installer.lua b/lua/nvim-lsp-installer.lua index 52f8289a..6c2a9f2b 100644 --- a/lua/nvim-lsp-installer.lua +++ b/lua/nvim-lsp-installer.lua @@ -7,6 +7,7 @@ local servers = require "nvim-lsp-installer.servers" local settings = require "nvim-lsp-installer.settings" local log = require "nvim-lsp-installer.log" local platform = require "nvim-lsp-installer.platform" +local language_autocomplete_map = require "nvim-lsp-installer._generated.language_autocomplete_map" local M = {} @@ -32,6 +33,14 @@ function M.display() status_win().open() end +function M.get_install_completion() + local result = {} + local server_names = servers.get_available_server_names() + vim.list_extend(result, server_names) + vim.list_extend(result, vim.tbl_keys(language_autocomplete_map)) + return result +end + ---Raises an error with the provided message. If in a headless environment, ---will also schedule an immediate shutdown with the provided exit code. ---@param msg string @@ -114,11 +123,36 @@ function M.uninstall_sync(server_identifiers) end end +---@param server_identifier string +---@return string,string|nil +local function translate_language_alias(server_identifier, version) + local language_aliases = language_autocomplete_map[server_identifier] + if language_aliases then + local choices = {} + for idx, server_alias in ipairs(language_aliases) do + table.insert(choices, ("&%d %s"):format(idx, server_alias)) + end + local choice = vim.fn.confirm( + ("The following servers were found for language %q, please select which one you want to install:"):format( + server_identifier + ), + table.concat(choices, "\n"), + 0 + ) + return language_aliases[choice] + end + return server_identifier, version +end + --- Queues a server to be installed. Will also open the status window. --- Use the .on_server_ready(cb) function to register a handler to be executed when a server is ready to be set up. ---@param server_identifier string @The server to install. This can also include a requested version, for example "rust_analyzer@nightly". function M.install(server_identifier) - local server_name, version = servers.parse_server_identifier(server_identifier) + local server_name, version = translate_language_alias(servers.parse_server_identifier(server_identifier)) + if not server_name then + -- No selection was made + return + end local ok, server = servers.get_server(server_name) if not ok then return notify(("Unable to find LSP server %s.\n\n%s"):format(server_name, server), vim.log.levels.ERROR) diff --git a/lua/nvim-lsp-installer/_generated/language_autocomplete_map.lua b/lua/nvim-lsp-installer/_generated/language_autocomplete_map.lua new file mode 100644 index 00000000..628adb75 --- /dev/null +++ b/lua/nvim-lsp-installer/_generated/language_autocomplete_map.lua @@ -0,0 +1,22 @@ +-- THIS FILE IS GENERATED. DO NOT EDIT MANUALLY. +-- stylua: ignore start +return { + ["c++"] = { "clangd" }, + csharp = { "omnisharp" }, + d = { "serve_d" }, + fortran = { "fortls" }, + haskell = { "hls" }, + java = { "jdtls" }, + javascript = { "rome", "tsserver" }, + latex = { "ltex", "texlab" }, + lua = { "sumneko_lua" }, + php = { "intelephense", "phpactor" }, + python = { "jedi_language_server", "pylsp", "pyright" }, + ruby = { "solargraph" }, + sql = { "sqlls", "sqls" }, + terraform = { "terraformls", "tflint" }, + typescript = { "rome", "tsserver" }, + vue = { "volar", "vuels" }, + xml = { "lemminx" }, + zig = { "zls" } +}
\ No newline at end of file diff --git a/lua/nvim-lsp-installer/server.lua b/lua/nvim-lsp-installer/server.lua index fc26ddb4..69fc2447 100644 --- a/lua/nvim-lsp-installer/server.lua +++ b/lua/nvim-lsp-installer/server.lua @@ -14,13 +14,14 @@ local M = {} M.get_server_root_path = servers.get_server_install_path ---@alias ServerDeprecation {message:string, replace_with:string|nil} ----@alias ServerOpts {name:string, root_dir:string, homepage:string|nil, deprecated:ServerDeprecation, installer:ServerInstallerFunction|ServerInstallerFunction[], default_options:table, pre_setup:fun()|nil, post_setup:fun()|nil} +---@alias ServerOpts {name:string, root_dir:string, homepage:string|nil, deprecated:ServerDeprecation, installer:ServerInstallerFunction|ServerInstallerFunction[], default_options:table, pre_setup:fun()|nil, post_setup:fun()|nil, languages: string[]} ---@class Server ---@field public name string @The server name. This is the same as lspconfig's server names. ---@field public root_dir string @The directory where the server should be installed in. ---@field public homepage string|nil @The homepage where users can find more information. This is shown to users in the UI. ---@field public deprecated ServerDeprecation|nil @The existence (not nil) of this field indicates this server is depracted. +---@field public languages string[] ---@field private _installer ServerInstallerFunction ---@field private _on_ready_handlers fun(server: Server)[] ---@field private _default_options table @The server's default options. This is used in @see Server#setup. @@ -37,6 +38,7 @@ function M.Server:new(opts) root_dir = opts.root_dir, homepage = opts.homepage, deprecated = opts.deprecated, + languages = opts.languages or {}, _on_ready_handlers = {}, _installer = type(opts.installer) == "function" and opts.installer or installers.pipe(opts.installer), _default_options = opts.default_options, diff --git a/lua/nvim-lsp-installer/servers/angularls/init.lua b/lua/nvim-lsp-installer/servers/angularls/init.lua index a7217783..35f46713 100644 --- a/lua/nvim-lsp-installer/servers/angularls/init.lua +++ b/lua/nvim-lsp-installer/servers/angularls/init.lua @@ -20,6 +20,7 @@ return function(name, root_dir) name = name, root_dir = root_dir, homepage = "https://angular.io/guide/language-service", + languages = { "angular" }, installer = npm.packages { "@angular/language-server" }, default_options = { cmd = { diff --git a/lua/nvim-lsp-installer/servers/ansiblels/init.lua b/lua/nvim-lsp-installer/servers/ansiblels/init.lua index 46afb9a1..2f154612 100644 --- a/lua/nvim-lsp-installer/servers/ansiblels/init.lua +++ b/lua/nvim-lsp-installer/servers/ansiblels/init.lua @@ -7,6 +7,7 @@ return function(name, root_dir) return server.Server:new { name = name, root_dir = root_dir, + languages = { "ansible" }, homepage = "https://github.com/ansible/ansible-language-server", installer = { std.git_clone "https://github.com/ansible/ansible-language-server", diff --git a/lua/nvim-lsp-installer/servers/bashls/init.lua b/lua/nvim-lsp-installer/servers/bashls/init.lua index a670d6fc..4a6b234c 100644 --- a/lua/nvim-lsp-installer/servers/bashls/init.lua +++ b/lua/nvim-lsp-installer/servers/bashls/init.lua @@ -5,6 +5,7 @@ return function(name, root_dir) return server.Server:new { name = name, root_dir = root_dir, + languages = { "bash" }, homepage = "https://github.com/bash-lsp/bash-language-server", installer = npm.packages { "bash-language-server" }, default_options = { diff --git a/lua/nvim-lsp-installer/servers/bicep/init.lua b/lua/nvim-lsp-installer/servers/bicep/init.lua index ce76ccb6..79672150 100644 --- a/lua/nvim-lsp-installer/servers/bicep/init.lua +++ b/lua/nvim-lsp-installer/servers/bicep/init.lua @@ -7,6 +7,7 @@ return function(name, root_dir) return server.Server:new { name = name, root_dir = root_dir, + languages = { "bicep" }, homepage = "https://github.com/Azure/bicep", installer = { std.ensure_executables { diff --git a/lua/nvim-lsp-installer/servers/clangd/init.lua b/lua/nvim-lsp-installer/servers/clangd/init.lua index 18e16189..5217894c 100644 --- a/lua/nvim-lsp-installer/servers/clangd/init.lua +++ b/lua/nvim-lsp-installer/servers/clangd/init.lua @@ -12,6 +12,7 @@ return function(name, root_dir) name = name, root_dir = root_dir, homepage = "https://clangd.llvm.org", + languages = { "c", "c++" }, installer = { context.use_github_release_file("clangd/clangd", function(version) return Data.coalesce( diff --git a/lua/nvim-lsp-installer/servers/clojure_lsp/init.lua b/lua/nvim-lsp-installer/servers/clojure_lsp/init.lua index 61f6b41e..3b822b9b 100644 --- a/lua/nvim-lsp-installer/servers/clojure_lsp/init.lua +++ b/lua/nvim-lsp-installer/servers/clojure_lsp/init.lua @@ -10,6 +10,7 @@ return function(name, root_dir) name = name, root_dir = root_dir, homepage = "https://clojure-lsp.io", + languages = { "clojure" }, installer = { context.use_github_release_file( "clojure-lsp/clojure-lsp", diff --git a/lua/nvim-lsp-installer/servers/cmake/init.lua b/lua/nvim-lsp-installer/servers/cmake/init.lua index 38df47b3..a2182697 100644 --- a/lua/nvim-lsp-installer/servers/cmake/init.lua +++ b/lua/nvim-lsp-installer/servers/cmake/init.lua @@ -6,6 +6,7 @@ return function(name, root_dir) name = name, root_dir = root_dir, homepage = "https://github.com/regen100/cmake-language-server", + languages = { "cmake" }, installer = pip3.packages { "cmake-language-server" }, default_options = { cmd = { pip3.executable(root_dir, "cmake-language-server") }, diff --git a/lua/nvim-lsp-installer/servers/cssls/init.lua b/lua/nvim-lsp-installer/servers/cssls/init.lua index 5cb4237b..f99df56c 100644 --- a/lua/nvim-lsp-installer/servers/cssls/init.lua +++ b/lua/nvim-lsp-installer/servers/cssls/init.lua @@ -1 +1 @@ -return require "nvim-lsp-installer.servers.vscode-langservers-extracted" "vscode-css-language-server" +return require "nvim-lsp-installer.servers.vscode-langservers-extracted"("vscode-css-language-server", { "css" }) diff --git a/lua/nvim-lsp-installer/servers/denols/init.lua b/lua/nvim-lsp-installer/servers/denols/init.lua index 20063052..99ecd422 100644 --- a/lua/nvim-lsp-installer/servers/denols/init.lua +++ b/lua/nvim-lsp-installer/servers/denols/init.lua @@ -12,6 +12,7 @@ return function(name, root_dir) name = name, root_dir = root_dir, homepage = "https://deno.land/x/deno/cli/lsp", + languages = { "deno" }, installer = { context.use_github_release_file( "denoland/deno", diff --git a/lua/nvim-lsp-installer/servers/diagnosticls/init.lua b/lua/nvim-lsp-installer/servers/diagnosticls/init.lua index 3a48d13a..98abf552 100644 --- a/lua/nvim-lsp-installer/servers/diagnosticls/init.lua +++ b/lua/nvim-lsp-installer/servers/diagnosticls/init.lua @@ -5,6 +5,7 @@ return function(name, root_dir) return server.Server:new { name = name, root_dir = root_dir, + languages = {}, homepage = "https://github.com/iamcco/diagnostic-languageserver", installer = npm.packages { "diagnostic-languageserver" }, default_options = { diff --git a/lua/nvim-lsp-installer/servers/dockerls/init.lua b/lua/nvim-lsp-installer/servers/dockerls/init.lua index 621eb8ed..595d1533 100644 --- a/lua/nvim-lsp-installer/servers/dockerls/init.lua +++ b/lua/nvim-lsp-installer/servers/dockerls/init.lua @@ -6,6 +6,7 @@ return function(name, root_dir) name = name, root_dir = root_dir, homepage = "https://github.com/rcjsuen/dockerfile-language-server-nodejs", + languages = { "docker" }, installer = npm.packages { "dockerfile-language-server-nodejs" }, default_options = { cmd = { npm.executable(root_dir, "docker-langserver"), "--stdio" }, diff --git a/lua/nvim-lsp-installer/servers/dotls/init.lua b/lua/nvim-lsp-installer/servers/dotls/init.lua index bd2deedf..86182a17 100644 --- a/lua/nvim-lsp-installer/servers/dotls/init.lua +++ b/lua/nvim-lsp-installer/servers/dotls/init.lua @@ -6,6 +6,7 @@ return function(name, root_dir) name = name, root_dir = root_dir, homepage = "https://github.com/nikeee/dot-language-server", + languages = { "dot" }, installer = npm.packages { "dot-language-server" }, default_options = { cmd = { npm.executable(root_dir, "dot-language-server"), "--stdio" }, diff --git a/lua/nvim-lsp-installer/servers/efm/init.lua b/lua/nvim-lsp-installer/servers/efm/init.lua index 875b3884..135e72e9 100644 --- a/lua/nvim-lsp-installer/servers/efm/init.lua +++ b/lua/nvim-lsp-installer/servers/efm/init.lua @@ -6,6 +6,7 @@ return function(name, root_dir) name = name, root_dir = root_dir, homepage = "https://github.com/mattn/efm-langserver", + languages = {}, installer = go.packages { "github.com/mattn/efm-langserver" }, default_options = { cmd = { go.executable(root_dir, "efm-langserver") }, diff --git a/lua/nvim-lsp-installer/servers/elixirls/init.lua b/lua/nvim-lsp-installer/servers/elixirls/init.lua index e0ca0682..181b2b49 100644 --- a/lua/nvim-lsp-installer/servers/elixirls/init.lua +++ b/lua/nvim-lsp-installer/servers/elixirls/init.lua @@ -8,6 +8,7 @@ return function(name, root_dir) name = name, root_dir = root_dir, homepage = "https://github.com/elixir-lsp/elixir-ls", + languages = { "elixir" }, installer = { context.use_github_release_file("elixir-lsp/elixir-ls", "elixir-ls.zip"), context.capture(function(ctx) diff --git a/lua/nvim-lsp-installer/servers/elmls/init.lua b/lua/nvim-lsp-installer/servers/elmls/init.lua index 676beddd..eeff7841 100644 --- a/lua/nvim-lsp-installer/servers/elmls/init.lua +++ b/lua/nvim-lsp-installer/servers/elmls/init.lua @@ -6,6 +6,7 @@ return function(name, root_dir) name = name, root_dir = root_dir, homepage = "https://github.com/elm-tooling/elm-language-server", + languages = { "elm" }, installer = npm.packages { "@elm-tooling/elm-language-server", "elm", "elm-test", "elm-format" }, default_options = { cmd = { npm.executable(root_dir, "elm-language-server") }, diff --git a/lua/nvim-lsp-installer/servers/ember/init.lua b/lua/nvim-lsp-installer/servers/ember/init.lua index 095503ef..f4ee38d7 100644 --- a/lua/nvim-lsp-installer/servers/ember/init.lua +++ b/lua/nvim-lsp-installer/servers/ember/init.lua @@ -5,6 +5,7 @@ return function(name, root_dir) return server.Server:new { name = name, root_dir = root_dir, + languages = { "ember" }, homepage = "https://github.com/lifeart/ember-language-server", installer = npm.packages { "@lifeart/ember-language-server" }, default_options = { diff --git a/lua/nvim-lsp-installer/servers/emmet_ls/init.lua b/lua/nvim-lsp-installer/servers/emmet_ls/init.lua index afa46ef2..622d0ab5 100644 --- a/lua/nvim-lsp-installer/servers/emmet_ls/init.lua +++ b/lua/nvim-lsp-installer/servers/emmet_ls/init.lua @@ -6,6 +6,7 @@ return function(name, root_dir) name = name, root_dir = root_dir, homepage = "https://github.com/aca/emmet-ls", + languages = { "emmet" }, installer = npm.packages { "emmet-ls" }, default_options = { cmd = { npm.executable(root_dir, "emmet-ls"), "--stdio" }, diff --git a/lua/nvim-lsp-installer/servers/erlangls/init.lua b/lua/nvim-lsp-installer/servers/erlangls/init.lua index 2b3a3120..b7a88919 100644 --- a/lua/nvim-lsp-installer/servers/erlangls/init.lua +++ b/lua/nvim-lsp-installer/servers/erlangls/init.lua @@ -10,6 +10,7 @@ return function(name, root_dir) return server.Server:new { name = name, root_dir = root_dir, + languages = { "erlang" }, homepage = "https://erlang-ls.github.io/", installer = { std.ensure_executables { diff --git a/lua/nvim-lsp-installer/servers/eslint/init.lua b/lua/nvim-lsp-installer/servers/eslint/init.lua index 21979405..e7627052 100644 --- a/lua/nvim-lsp-installer/servers/eslint/init.lua +++ b/lua/nvim-lsp-installer/servers/eslint/init.lua @@ -1 +1 @@ -return require "nvim-lsp-installer.servers.vscode-langservers-extracted" "vscode-eslint-language-server" +return require "nvim-lsp-installer.servers.vscode-langservers-extracted"("vscode-eslint-language-server", { "eslint" }) diff --git a/lua/nvim-lsp-installer/servers/eslintls/init.lua b/lua/nvim-lsp-installer/servers/eslintls/init.lua index ec0afe2f..a7a661da 100644 --- a/lua/nvim-lsp-installer/servers/eslintls/init.lua +++ b/lua/nvim-lsp-installer/servers/eslintls/init.lua @@ -19,6 +19,7 @@ return function(name, root_dir) message = "eslintls has been replaced with eslint. It's still the same server - just a different name and upstream dependencies.", replace_with = "eslint", }, + languages = { "eslint" }, installer = { std.git_clone "https://github.com/microsoft/vscode-eslint", npm.install(), diff --git a/lua/nvim-lsp-installer/servers/fortls/init.lua b/lua/nvim-lsp-installer/servers/fortls/init.lua index d9c771fb..079b55e3 100644 --- a/lua/nvim-lsp-installer/servers/fortls/init.lua +++ b/lua/nvim-lsp-installer/servers/fortls/init.lua @@ -6,6 +6,7 @@ return function(name, root_dir) name = name, root_dir = root_dir, homepage = "https://github.com/hansec/fortran-language-server", + languages = { "fortran" }, installer = pip3.packages { "fortran-language-server" }, default_options = { cmd = { pip3.executable(root_dir, "fortls") }, diff --git a/lua/nvim-lsp-installer/servers/gopls/init.lua b/lua/nvim-lsp-installer/servers/gopls/init.lua index 26e0d45e..b38cd7a6 100644 --- a/lua/nvim-lsp-installer/servers/gopls/init.lua +++ b/lua/nvim-lsp-installer/servers/gopls/init.lua @@ -6,6 +6,7 @@ return function(name, root_dir) name = name, root_dir = root_dir, homepage = "https://pkg.go.dev/golang.org/x/tools/gopls", + languages = { "go" }, installer = go.packages { "golang.org/x/tools/gopls" }, default_options = { cmd = { go.executable(root_dir, "gopls") }, diff --git a/lua/nvim-lsp-installer/servers/graphql/init.lua b/lua/nvim-lsp-installer/servers/graphql/init.lua index 5be801e6..772ac875 100644 --- a/lua/nvim-lsp-installer/servers/graphql/init.lua +++ b/lua/nvim-lsp-installer/servers/graphql/init.lua @@ -6,6 +6,7 @@ return function(name, root_dir) name = name, root_dir = root_dir, homepage = "https://www.npmjs.com/package/graphql-language-service-cli", + languages = { "graphql" }, installer = npm.packages { "graphql-language-service-cli", "graphql" }, default_options = { cmd = { npm.executable(root_dir, "graphql-lsp"), "server", "-m", "stream" }, diff --git a/lua/nvim-lsp-installer/servers/groovyls/init.lua b/lua/nvim-lsp-installer/servers/groovyls/init.lua index d58b93dd..5d55dc29 100644 --- a/lua/nvim-lsp-installer/servers/groovyls/init.lua +++ b/lua/nvim-lsp-installer/servers/groovyls/init.lua @@ -7,6 +7,7 @@ return function(name, root_dir) return server.Server:new { name = name, root_dir = root_dir, + languages = { "groovy" }, homepage = "https://github.com/GroovyLanguageServer/groovy-language-server", installer = { std.ensure_executables { { "javac", "javac was not found in path." } }, diff --git a/lua/nvim-lsp-installer/servers/hls/init.lua b/lua/nvim-lsp-installer/servers/hls/init.lua index 21a5ed52..167ce17c 100644 --- a/lua/nvim-lsp-installer/servers/hls/init.lua +++ b/lua/nvim-lsp-installer/servers/hls/init.lua @@ -12,6 +12,7 @@ return function(name, root_dir) name = name, root_dir = root_dir, homepage = "https://haskell-language-server.readthedocs.io/en/latest/", + languages = { "haskell" }, installer = { context.use_github_release_file("haskell/haskell-language-server", function(version) return Data.coalesce( diff --git a/lua/nvim-lsp-installer/servers/html/init.lua b/lua/nvim-lsp-installer/servers/html/init.lua index cb264ee3..86018d46 100644 --- a/lua/nvim-lsp-installer/servers/html/init.lua +++ b/lua/nvim-lsp-installer/servers/html/init.lua @@ -1 +1 @@ -return require "nvim-lsp-installer.servers.vscode-langservers-extracted" "vscode-html-language-server" +return require "nvim-lsp-installer.servers.vscode-langservers-extracted"("vscode-html-language-server", { "html" }) diff --git a/lua/nvim-lsp-installer/servers/intelephense/init.lua b/lua/nvim-lsp-installer/servers/intelephense/init.lua index 1d4ddb74..a2166800 100644 --- a/lua/nvim-lsp-installer/servers/intelephense/init.lua +++ b/lua/nvim-lsp-installer/servers/intelephense/init.lua @@ -6,6 +6,7 @@ return function(name, root_dir) name = name, root_dir = root_dir, homepage = "https://intelephense.com", + languages = { "php" }, installer = npm.packages { "intelephense" }, default_options = { cmd = { npm.executable(root_dir, "intelephense"), "--stdio" }, diff --git a/lua/nvim-lsp-installer/servers/jdtls/init.lua b/lua/nvim-lsp-installer/servers/jdtls/init.lua index f3354022..716d110e 100644 --- a/lua/nvim-lsp-installer/servers/jdtls/init.lua +++ b/lua/nvim-lsp-installer/servers/jdtls/init.lua @@ -45,6 +45,7 @@ return function(name, root_dir) return server.Server:new { name = name, root_dir = root_dir, + languages = { "java" }, homepage = "https://github.com/eclipse/eclipse.jdt.ls", installer = { context.capture(function(ctx) diff --git a/lua/nvim-lsp-installer/servers/jedi_language_server/init.lua b/lua/nvim-lsp-installer/servers/jedi_language_server/init.lua index a91b34ba..70d4b6fb 100644 --- a/lua/nvim-lsp-installer/servers/jedi_language_server/init.lua +++ b/lua/nvim-lsp-installer/servers/jedi_language_server/init.lua @@ -5,6 +5,7 @@ return function(name, root_dir) return server.Server:new { name = name, root_dir = root_dir, + languages = { "python" }, homepage = "https://github.com/pappasam/jedi-language-server", installer = pip3.packages { "jedi-language-server" }, default_options = { diff --git a/lua/nvim-lsp-installer/servers/jsonls/init.lua b/lua/nvim-lsp-installer/servers/jsonls/init.lua index 7a922f5d..5b4fbac9 100644 --- a/lua/nvim-lsp-installer/servers/jsonls/init.lua +++ b/lua/nvim-lsp-installer/servers/jsonls/init.lua @@ -1 +1 @@ -return require "nvim-lsp-installer.servers.vscode-langservers-extracted" "vscode-json-language-server" +return require "nvim-lsp-installer.servers.vscode-langservers-extracted"("vscode-json-language-server", { "json" }) diff --git a/lua/nvim-lsp-installer/servers/kotlin_language_server/init.lua b/lua/nvim-lsp-installer/servers/kotlin_language_server/init.lua index b154f83f..0000917b 100644 --- a/lua/nvim-lsp-installer/servers/kotlin_language_server/init.lua +++ b/lua/nvim-lsp-installer/servers/kotlin_language_server/init.lua @@ -9,6 +9,7 @@ return function(name, root_dir) name = name, root_dir = root_dir, homepage = "https://github.com/fwcd/kotlin-language-server", + languages = { "kotlin" }, installer = { context.use_github_release_file("fwcd/kotlin-language-server", "server.zip"), context.capture(function(ctx) diff --git a/lua/nvim-lsp-installer/servers/lemminx/init.lua b/lua/nvim-lsp-installer/servers/lemminx/init.lua index 3bdb24cf..51aac722 100644 --- a/lua/nvim-lsp-installer/servers/lemminx/init.lua +++ b/lua/nvim-lsp-installer/servers/lemminx/init.lua @@ -17,6 +17,7 @@ return function(name, root_dir) return server.Server:new { name = name, root_dir = root_dir, + languages = { "xml" }, homepage = "https://github.com/eclipse/lemminx", installer = { function(_, callback, ctx) diff --git a/lua/nvim-lsp-installer/servers/ltex/init.lua b/lua/nvim-lsp-installer/servers/ltex/init.lua index b48f4de3..4996eeb0 100644 --- a/lua/nvim-lsp-installer/servers/ltex/init.lua +++ b/lua/nvim-lsp-installer/servers/ltex/init.lua @@ -14,6 +14,7 @@ return function(name, root_dir) name = name, root_dir = root_dir, homepage = "https://valentjn.github.io/vscode-ltex", + languages = { "latex" }, installer = { context.use_github_release_file("valentjn/ltex-ls", function(version) return coalesce( diff --git a/lua/nvim-lsp-installer/servers/ocamlls/init.lua b/lua/nvim-lsp-installer/servers/ocamlls/init.lua index 8fbc8dc7..9218672b 100644 --- a/lua/nvim-lsp-installer/servers/ocamlls/init.lua +++ b/lua/nvim-lsp-installer/servers/ocamlls/init.lua @@ -6,6 +6,7 @@ return function(name, root_dir) name = name, root_dir = root_dir, homepage = "https://github.com/ocaml-lsp/ocaml-language-server", + languages = { "ocaml" }, installer = npm.packages { "ocaml-language-server" }, default_options = { cmd = { npm.executable(root_dir, "ocaml-language-server"), "--stdio" }, diff --git a/lua/nvim-lsp-installer/servers/omnisharp/init.lua b/lua/nvim-lsp-installer/servers/omnisharp/init.lua index ed85c774..ece5ca3a 100644 --- a/lua/nvim-lsp-installer/servers/omnisharp/init.lua +++ b/lua/nvim-lsp-installer/servers/omnisharp/init.lua @@ -12,6 +12,7 @@ return function(name, root_dir) name = name, root_dir = root_dir, homepage = "https://github.com/OmniSharp/omnisharp-roslyn", + languages = { "csharp" }, installer = { context.use_github_release_file( "OmniSharp/omnisharp-roslyn", diff --git a/lua/nvim-lsp-installer/servers/phpactor/init.lua b/lua/nvim-lsp-installer/servers/phpactor/init.lua index 164436e4..5a58bce7 100644 --- a/lua/nvim-lsp-installer/servers/phpactor/init.lua +++ b/lua/nvim-lsp-installer/servers/phpactor/init.lua @@ -9,6 +9,7 @@ return function(name, root_dir) name = name, root_dir = root_dir, homepage = "https://phpactor.readthedocs.io/en/master/", + languages = { "php" }, installer = installers.when { unix = { std.git_clone "https://github.com/phpactor/phpactor.git", diff --git a/lua/nvim-lsp-installer/servers/powershell_es/init.lua b/lua/nvim-lsp-installer/servers/powershell_es/init.lua index ef8ba614..d138bc57 100644 --- a/lua/nvim-lsp-installer/servers/powershell_es/init.lua +++ b/lua/nvim-lsp-installer/servers/powershell_es/init.lua @@ -9,6 +9,7 @@ return function(name, root_dir) name = name, root_dir = root_dir, homepage = "https://github.com/PowerShell/PowerShellEditorServices", + languages = { "powershell" }, installer = installers.when { win = { context.use_github_release_file("PowerShell/PowerShellEditorServices", "PowerShellEditorServices.zip"), diff --git a/lua/nvim-lsp-installer/servers/prismals/init.lua b/lua/nvim-lsp-installer/servers/prismals/init.lua index 97ad49d9..e6f0b348 100644 --- a/lua/nvim-lsp-installer/servers/prismals/init.lua +++ b/lua/nvim-lsp-installer/servers/prismals/init.lua @@ -5,6 +5,7 @@ return function(name, root_dir) return server.Server:new { name = name, root_dir = root_dir, + languages = { "prisma" }, homepage = "https://github.com/prisma/language-tools", installer = npm.packages { "@prisma/language-server" }, default_options = { diff --git a/lua/nvim-lsp-installer/servers/puppet/init.lua b/lua/nvim-lsp-installer/servers/puppet/init.lua index e124b9c0..b26b028a 100644 --- a/lua/nvim-lsp-installer/servers/puppet/init.lua +++ b/lua/nvim-lsp-installer/servers/puppet/init.lua @@ -8,6 +8,7 @@ return function(name, root_dir) name = name, root_dir = root_dir, homepage = "https://github.com/puppetlabs/puppet-editor-services", + languages = { "puppet" }, installer = { context.use_github_release_file("puppetlabs/puppet-editor-services", function(version) return ("puppet_editor_services_%s.zip"):format(version) diff --git a/lua/nvim-lsp-installer/servers/purescriptls/init.lua b/lua/nvim-lsp-installer/servers/purescriptls/init.lua index 63981df0..141f6b1e 100644 --- a/lua/nvim-lsp-installer/servers/purescriptls/init.lua +++ b/lua/nvim-lsp-installer/servers/purescriptls/init.lua @@ -5,6 +5,7 @@ return function(name, root_dir) return server.Server:new { name = name, root_dir = root_dir, + languages = { "purescript" }, homepage = "https://github.com/nwolverson/purescript-language-server", installer = npm.packages { "purescript-language-server" }, default_options = { diff --git a/lua/nvim-lsp-installer/servers/pylsp/init.lua b/lua/nvim-lsp-installer/servers/pylsp/init.lua index 8a14111d..e3da8e21 100644 --- a/lua/nvim-lsp-installer/servers/pylsp/init.lua +++ b/lua/nvim-lsp-installer/servers/pylsp/init.lua @@ -5,6 +5,7 @@ return function(name, root_dir) return server.Server:new { name = name, root_dir = root_dir, + languages = { "python" }, homepage = "https://github.com/python-lsp/python-lsp-server", installer = pip3.packages { "python-lsp-server[all]" }, default_options = { diff --git a/lua/nvim-lsp-installer/servers/pyright/init.lua b/lua/nvim-lsp-installer/servers/pyright/init.lua index 521830f6..00f46605 100644 --- a/lua/nvim-lsp-installer/servers/pyright/init.lua +++ b/lua/nvim-lsp-installer/servers/pyright/init.lua @@ -5,6 +5,7 @@ return function(name, root_dir) return server.Server:new { name = name, root_dir = root_dir, + languages = { "python" }, homepage = "https://github.com/microsoft/pyright", installer = npm.packages { "pyright" }, default_options = { diff --git a/lua/nvim-lsp-installer/servers/rescriptls/init.lua b/lua/nvim-lsp-installer/servers/rescriptls/init.lua index b7c5be9b..5717c208 100644 --- a/lua/nvim-lsp-installer/servers/rescriptls/init.lua +++ b/lua/nvim-lsp-installer/servers/rescriptls/init.lua @@ -7,6 +7,7 @@ return function(name, root_dir) return server.Server:new { name = name, root_dir = root_dir, + languages = { "rescript" }, homepage = "https://github.com/rescript-lang/rescript-vscode", installer = { context.use_github_release_file("rescript-lang/rescript-vscode", function(version) diff --git a/lua/nvim-lsp-installer/servers/rome/init.lua b/lua/nvim-lsp-installer/servers/rome/init.lua index 17564b9e..64bbcbb5 100644 --- a/lua/nvim-lsp-installer/servers/rome/init.lua +++ b/lua/nvim-lsp-installer/servers/rome/init.lua @@ -7,6 +7,7 @@ return function(name, root_dir) return server.Server:new { name = name, root_dir = root_dir, + languages = { "typescript", "javascript" }, homepage = "https://rome.tools", installer = { context.set(function(ctx) diff --git a/lua/nvim-lsp-installer/servers/rust_analyzer/init.lua b/lua/nvim-lsp-installer/servers/rust_analyzer/init.lua index a36e21d8..cd9d670e 100644 --- a/lua/nvim-lsp-installer/servers/rust_analyzer/init.lua +++ b/lua/nvim-lsp-installer/servers/rust_analyzer/init.lua @@ -36,6 +36,7 @@ return function(name, root_dir) name = name, root_dir = root_dir, homepage = "https://rust-analyzer.github.io", + languages = { "rust" }, installer = { context.use_github_release_file("rust-analyzer/rust-analyzer", target), context.capture(function(ctx) diff --git a/lua/nvim-lsp-installer/servers/serve_d/init.lua b/lua/nvim-lsp-installer/servers/serve_d/init.lua index e0e62d20..477dd65c 100644 --- a/lua/nvim-lsp-installer/servers/serve_d/init.lua +++ b/lua/nvim-lsp-installer/servers/serve_d/init.lua @@ -10,6 +10,7 @@ return function(name, root_dir) name = name, root_dir = root_dir, homepage = "https://github.com/Pure-D/serve-d", + languages = { "d" }, installer = { context.set(function(ctx) -- Consider the latest (as of writing) beta release as "latest", instead of 0.6.0. diff --git a/lua/nvim-lsp-installer/servers/solang/init.lua b/lua/nvim-lsp-installer/servers/solang/init.lua index d0de6c73..c6be4275 100644 --- a/lua/nvim-lsp-installer/servers/solang/init.lua +++ b/lua/nvim-lsp-installer/servers/solang/init.lua @@ -48,6 +48,7 @@ return function(name, root_dir) name = name, root_dir = root_dir, homepage = "https://solang.readthedocs.io/en/latest/", + languages = { "solang" }, installer = { solang_executable_installer, llvm_installer, diff --git a/lua/nvim-lsp-installer/servers/solargraph/init.lua b/lua/nvim-lsp-installer/servers/solargraph/init.lua index 9bd3afc2..d65cb031 100644 --- a/lua/nvim-lsp-installer/servers/solargraph/init.lua +++ b/lua/nvim-lsp-installer/servers/solargraph/init.lua @@ -5,6 +5,7 @@ return function(name, root_dir) return server.Server:new { name = name, root_dir = root_dir, + languages = { "ruby" }, homepage = "https://solargraph.org", installer = gem.packages { "solargraph" }, default_options = { diff --git a/lua/nvim-lsp-installer/servers/sqlls/init.lua b/lua/nvim-lsp-installer/servers/sqlls/init.lua index 662e9bb1..a9251874 100644 --- a/lua/nvim-lsp-installer/servers/sqlls/init.lua +++ b/lua/nvim-lsp-installer/servers/sqlls/init.lua @@ -5,6 +5,7 @@ return function(name, root_dir) return server.Server:new { name = name, root_dir = root_dir, + languages = { "sql" }, homepage = "https://github.com/joe-re/sql-language-server", installer = npm.packages { "sql-language-server" }, default_options = { diff --git a/lua/nvim-lsp-installer/servers/sqls/init.lua b/lua/nvim-lsp-installer/servers/sqls/init.lua index 5e3f4e1c..e816e3a3 100644 --- a/lua/nvim-lsp-installer/servers/sqls/init.lua +++ b/lua/nvim-lsp-installer/servers/sqls/init.lua @@ -5,6 +5,7 @@ return function(name, root_dir) return server.Server:new { name = name, root_dir = root_dir, + languages = { "sql" }, homepage = "https://github.com/lighttiger2505/sqls", installer = go.packages { "github.com/lighttiger2505/sqls" }, default_options = { diff --git a/lua/nvim-lsp-installer/servers/stylelint_lsp/init.lua b/lua/nvim-lsp-installer/servers/stylelint_lsp/init.lua index ea72db8f..fe2ed2c9 100644 --- a/lua/nvim-lsp-installer/servers/stylelint_lsp/init.lua +++ b/lua/nvim-lsp-installer/servers/stylelint_lsp/init.lua @@ -6,6 +6,7 @@ return function(name, root_dir) name = name, root_dir = root_dir, homepage = "https://github.com/bmatcuk/stylelint-lsp", + languages = { "stylelint" }, installer = npm.packages { "stylelint-lsp" }, default_options = { cmd = { npm.executable(root_dir, "stylelint-lsp"), "--stdio" }, diff --git a/lua/nvim-lsp-installer/servers/sumneko_lua/init.lua b/lua/nvim-lsp-installer/servers/sumneko_lua/init.lua index bac534a2..09654840 100644 --- a/lua/nvim-lsp-installer/servers/sumneko_lua/init.lua +++ b/lua/nvim-lsp-installer/servers/sumneko_lua/init.lua @@ -15,6 +15,7 @@ return function(name, root_dir) return server.Server:new { name = name, root_dir = root_dir, + languages = { "lua" }, homepage = "https://github.com/sumneko/lua-language-server", installer = { context.use_github_release_file("sumneko/vscode-lua", function(version) diff --git a/lua/nvim-lsp-installer/servers/svelte/init.lua b/lua/nvim-lsp-installer/servers/svelte/init.lua index 2415de63..225be747 100644 --- a/lua/nvim-lsp-installer/servers/svelte/init.lua +++ b/lua/nvim-lsp-installer/servers/svelte/init.lua @@ -5,6 +5,7 @@ return function(name, root_dir) return server.Server:new { name = name, root_dir = root_dir, + languages = { "svelte" }, homepage = "https://github.com/sveltejs/language-tools", installer = npm.packages { "svelte-language-server" }, default_options = { diff --git a/lua/nvim-lsp-installer/servers/tailwindcss/init.lua b/lua/nvim-lsp-installer/servers/tailwindcss/init.lua index c8c135e6..ff3396ad 100644 --- a/lua/nvim-lsp-installer/servers/tailwindcss/init.lua +++ b/lua/nvim-lsp-installer/servers/tailwindcss/init.lua @@ -5,6 +5,7 @@ return function(name, root_dir) return server.Server:new { name = name, root_dir = root_dir, + languages = { "tailwind" }, installer = npm.packages { "@tailwindcss/language-server" }, default_options = { cmd = { npm.executable(root_dir, "tailwindcss-language-server"), "--stdio" }, diff --git a/lua/nvim-lsp-installer/servers/terraformls/init.lua b/lua/nvim-lsp-installer/servers/terraformls/init.lua index e30967ec..dd20c15d 100644 --- a/lua/nvim-lsp-installer/servers/terraformls/init.lua +++ b/lua/nvim-lsp-installer/servers/terraformls/init.lua @@ -12,6 +12,7 @@ return function(name, root_dir) name = name, root_dir = root_dir, homepage = "https://github.com/hashicorp/terraform-ls", + languages = { "terraform" }, installer = { context.use_github_release_file("hashicorp/terraform-ls", function(version) return Data.coalesce( diff --git a/lua/nvim-lsp-installer/servers/texlab/init.lua b/lua/nvim-lsp-installer/servers/texlab/init.lua index ff4890ad..904c0441 100644 --- a/lua/nvim-lsp-installer/servers/texlab/init.lua +++ b/lua/nvim-lsp-installer/servers/texlab/init.lua @@ -12,6 +12,7 @@ return function(name, root_dir) name = name, root_dir = root_dir, homepage = "https://github.com/latex-lsp/texlab", + languages = { "latex" }, installer = { context.use_github_release_file( "latex-lsp/texlab", diff --git a/lua/nvim-lsp-installer/servers/tflint/init.lua b/lua/nvim-lsp-installer/servers/tflint/init.lua index 32dfe88d..24775902 100644 --- a/lua/nvim-lsp-installer/servers/tflint/init.lua +++ b/lua/nvim-lsp-installer/servers/tflint/init.lua @@ -23,6 +23,7 @@ return function(name, root_dir) return server.Server:new { name = name, root_dir = root_dir, + languages = { "terraform" }, homepage = "https://github.com/terraform-linters/tflint", installer = { context.use_github_release_file("terraform-linters/tflint", target), diff --git a/lua/nvim-lsp-installer/servers/tsserver/init.lua b/lua/nvim-lsp-installer/servers/tsserver/init.lua index d4008933..7bb908b1 100644 --- a/lua/nvim-lsp-installer/servers/tsserver/init.lua +++ b/lua/nvim-lsp-installer/servers/tsserver/init.lua @@ -5,6 +5,7 @@ return function(name, root_dir) return server.Server:new { name = name, root_dir = root_dir, + languages = { "typescript", "javascript" }, homepage = "https://github.com/typescript-language-server/typescript-language-server", installer = npm.packages { "typescript-language-server", "typescript" }, default_options = { diff --git a/lua/nvim-lsp-installer/servers/vala_ls/init.lua b/lua/nvim-lsp-installer/servers/vala_ls/init.lua index eaaf6998..94f8c6dc 100644 --- a/lua/nvim-lsp-installer/servers/vala_ls/init.lua +++ b/lua/nvim-lsp-installer/servers/vala_ls/init.lua @@ -10,6 +10,7 @@ return function(name, root_dir) name = name, root_dir = root_dir, homepage = "https://wiki.gnome.org/Projects/Vala", + languages = { "vala" }, installer = { std.ensure_executables { { "meson", "meson was not found in path. Refer to https://mesonbuild.com/Getting-meson.html" }, diff --git a/lua/nvim-lsp-installer/servers/vimls/init.lua b/lua/nvim-lsp-installer/servers/vimls/init.lua index 4ea07465..df5e2e31 100644 --- a/lua/nvim-lsp-installer/servers/vimls/init.lua +++ b/lua/nvim-lsp-installer/servers/vimls/init.lua @@ -5,6 +5,7 @@ return function(name, root_dir) return server.Server:new { name = name, root_dir = root_dir, + languages = { "vim" }, homepage = "https://github.com/iamcco/vim-language-server", installer = npm.packages { "vim-language-server" }, default_options = { diff --git a/lua/nvim-lsp-installer/servers/volar/init.lua b/lua/nvim-lsp-installer/servers/volar/init.lua index 26af7d5d..278c0a4d 100644 --- a/lua/nvim-lsp-installer/servers/volar/init.lua +++ b/lua/nvim-lsp-installer/servers/volar/init.lua @@ -6,6 +6,7 @@ return function(name, root_dir) name = name, root_dir = root_dir, homepage = "https://github.com/johnsoncodehk/volar", + languages = { "vue" }, installer = npm.packages { "@volar/server" }, default_options = { cmd = { npm.executable(root_dir, "volar-server"), "--stdio" }, diff --git a/lua/nvim-lsp-installer/servers/vscode-langservers-extracted/init.lua b/lua/nvim-lsp-installer/servers/vscode-langservers-extracted/init.lua index 4869924b..35fb97a8 100644 --- a/lua/nvim-lsp-installer/servers/vscode-langservers-extracted/init.lua +++ b/lua/nvim-lsp-installer/servers/vscode-langservers-extracted/init.lua @@ -1,10 +1,13 @@ local server = require "nvim-lsp-installer.server" local npm = require "nvim-lsp-installer.installers.npm" -return function(executable) +---@param executable string @The vscode-langservers-extracted executable to use for the server. +---@param languages Language[] +return function(executable, languages) return function(name, root_dir) return server.Server:new { name = name, + languages = languages, root_dir = root_dir, installer = npm.packages { "vscode-langservers-extracted" }, default_options = { diff --git a/lua/nvim-lsp-installer/servers/vuels/init.lua b/lua/nvim-lsp-installer/servers/vuels/init.lua index baedb4df..aed040fd 100644 --- a/lua/nvim-lsp-installer/servers/vuels/init.lua +++ b/lua/nvim-lsp-installer/servers/vuels/init.lua @@ -5,6 +5,7 @@ return function(name, root_dir) return server.Server:new { name = name, root_dir = root_dir, + languages = { "vue" }, homepage = "https://github.com/vuejs/vetur", installer = npm.packages { "vls" }, default_options = { diff --git a/lua/nvim-lsp-installer/servers/yamlls/init.lua b/lua/nvim-lsp-installer/servers/yamlls/init.lua index ed65d03f..1f49b2b2 100644 --- a/lua/nvim-lsp-installer/servers/yamlls/init.lua +++ b/lua/nvim-lsp-installer/servers/yamlls/init.lua @@ -5,6 +5,7 @@ return function(name, root_dir) return server.Server:new { name = name, root_dir = root_dir, + languages = { "yaml" }, homepage = "https://github.com/redhat-developer/yaml-language-server", installer = npm.packages { "yaml-language-server" }, default_options = { diff --git a/lua/nvim-lsp-installer/servers/zls/init.lua b/lua/nvim-lsp-installer/servers/zls/init.lua index 53aa5a1e..8e1f8934 100644 --- a/lua/nvim-lsp-installer/servers/zls/init.lua +++ b/lua/nvim-lsp-installer/servers/zls/init.lua @@ -21,6 +21,7 @@ return function(name, root_dir) name = name, root_dir = root_dir, homepage = "https://github.com/zigtools/zls", + languages = { "zig" }, installer = { context.use_github_release_file("zigtools/zls", archive_name and ("%s.tar.xz"):format(archive_name)), context.capture(function(ctx) diff --git a/lua/nvim-lsp-installer/ui/status-win/init.lua b/lua/nvim-lsp-installer/ui/status-win/init.lua index 69e04200..67319afa 100644 --- a/lua/nvim-lsp-installer/ui/status-win/init.lua +++ b/lua/nvim-lsp-installer/ui/status-win/init.lua @@ -5,7 +5,6 @@ local Data = require "nvim-lsp-installer.data" local display = require "nvim-lsp-installer.ui.display" local settings = require "nvim-lsp-installer.settings" local lsp_servers = require "nvim-lsp-installer.servers" -local filetype_map = require "nvim-lsp-installer._generated.filetype_map" local HELP_KEYMAP = "?" local CLOSE_WINDOW_KEYMAP_1 = "<Esc>" @@ -459,6 +458,7 @@ local function normalize_chunks_line_endings(chunk, dest) end local function init(all_servers) + local filetype_map = require "nvim-lsp-installer._generated.filetype_map" local window = display.new_view_only_win "LSP servers" window.view( diff --git a/plugin/nvim-lsp-installer.vim b/plugin/nvim-lsp-installer.vim index cb1e9da0..6650290f 100644 --- a/plugin/nvim-lsp-installer.vim +++ b/plugin/nvim-lsp-installer.vim @@ -7,7 +7,7 @@ set cpo&vim let s:no_confirm_flag = "--no-confirm" function! s:LspInstallCompletion(...) abort - return join(sort(luaeval("require'nvim-lsp-installer.servers'.get_available_server_names()")), "\n") + return join(sort(luaeval("require'nvim-lsp-installer'.get_install_completion()")), "\n") endfunction function! s:LspUninstallCompletion(...) abort diff --git a/scripts/autogen_metadata.lua b/scripts/autogen_metadata.lua index 0a7b6afa..279d5e23 100644 --- a/scripts/autogen_metadata.lua +++ b/scripts/autogen_metadata.lua @@ -13,7 +13,7 @@ local generated_dir = Path.concat { vim.fn.getcwd(), "lua", "nvim-lsp-installer" print("Creating directory " .. generated_dir) vim.fn.mkdir(generated_dir, "p") -for _, file in ipairs(vim.fn.glob(generated_dir .. "*", 1, 1)) do +for _, file in ipairs(vim.fn.glob(Path.concat { generated_dir, "*" }, 1, 1)) do print("Deleting " .. file) vim.fn.delete(file) end @@ -80,6 +80,52 @@ do end do + ---@type table<string, Server> + local language_map = {} + + local available_servers = servers.get_available_servers() + for _, server in pairs(available_servers) do + local languages = server.languages + for _, language in pairs(languages) do + if not language_map[language] then + language_map[language] = {} + end + table.insert(language_map[language], server) + end + end + + local autocomplete_candidates = {} + for language, language_servers in pairs(language_map) do + local non_deprecated_servers = vim.tbl_filter(function(server) + return server.deprecated == nil + end, language_servers) + local is_candidate = #non_deprecated_servers > 0 + + if #non_deprecated_servers == 1 then + local server = non_deprecated_servers[1] + local server_name_similarity_check = server.name:find(language, 1, true) == 1 + if server_name_similarity_check then + -- There's only one server that supports this language, and it's name is similar enough to the language name. + is_candidate = false + end + end + + if is_candidate then + autocomplete_candidates[language] = vim.tbl_map(function(server) + return server.name + end, non_deprecated_servers) + table.sort(autocomplete_candidates[language]) + end + end + + write_file( + Path.concat { generated_dir, "language_autocomplete_map.lua" }, + "return " .. vim.inspect(autocomplete_candidates), + "w" + ) +end + +do local metadata = {} ---@param server Server |
