aboutsummaryrefslogtreecommitdiffstats
path: root/lua/lspconfig.lua
diff options
context:
space:
mode:
authorHirokazu Hata <h.hata.ai.t@gmail.com>2020-09-06 17:49:21 +0900
committerHirokazu Hata <h.hata.ai.t@gmail.com>2020-09-06 17:49:21 +0900
commitddcd9e6aae50d6397e43e4fc9ba0cf7a82cc79de (patch)
treec301c7a765535dcb5387d76cc71e28d845dcce23 /lua/lspconfig.lua
parentMerge pull request #238 from steelsojka/angular-ls (diff)
downloadnvim-lspconfig-ddcd9e6aae50d6397e43e4fc9ba0cf7a82cc79de.tar
nvim-lspconfig-ddcd9e6aae50d6397e43e4fc9ba0cf7a82cc79de.tar.gz
nvim-lspconfig-ddcd9e6aae50d6397e43e4fc9ba0cf7a82cc79de.tar.bz2
nvim-lspconfig-ddcd9e6aae50d6397e43e4fc9ba0cf7a82cc79de.tar.lz
nvim-lspconfig-ddcd9e6aae50d6397e43e4fc9ba0cf7a82cc79de.tar.xz
nvim-lspconfig-ddcd9e6aae50d6397e43e4fc9ba0cf7a82cc79de.tar.zst
nvim-lspconfig-ddcd9e6aae50d6397e43e4fc9ba0cf7a82cc79de.zip
Rename nvim_lsp to lspconfig
Diffstat (limited to 'lua/lspconfig.lua')
-rw-r--r--lua/lspconfig.lua83
1 files changed, 83 insertions, 0 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