From 4fbf2d0b0595f6de4e1debde67bbeeec280b3e89 Mon Sep 17 00:00:00 2001 From: William Boman Date: Sun, 4 Apr 2021 18:37:59 +0200 Subject: use same lsp server names as lspconfig --- README.md | 1 - lua/nvim-lsp-installer/installer.lua | 24 +++---- lua/nvim-lsp-installer/installers/bash-ls.lua | 14 ---- lua/nvim-lsp-installer/installers/bashls.lua | 14 ++++ lua/nvim-lsp-installer/installers/css-ls.lua | 14 ---- lua/nvim-lsp-installer/installers/cssls.lua | 14 ++++ lua/nvim-lsp-installer/installers/docker-ls.lua | 14 ---- lua/nvim-lsp-installer/installers/dockerls.lua | 14 ++++ lua/nvim-lsp-installer/installers/eslint-ls.lua | 78 ---------------------- lua/nvim-lsp-installer/installers/eslintls.lua | 78 ++++++++++++++++++++++ lua/nvim-lsp-installer/installers/graphql-ls.lua | 18 ----- lua/nvim-lsp-installer/installers/graphql.lua | 18 +++++ lua/nvim-lsp-installer/installers/html-ls.lua | 14 ---- lua/nvim-lsp-installer/installers/html.lua | 14 ++++ lua/nvim-lsp-installer/installers/json-ls.lua | 14 ---- lua/nvim-lsp-installer/installers/jsonls.lua | 14 ++++ lua/nvim-lsp-installer/installers/lua-ls.lua | 59 ---------------- lua/nvim-lsp-installer/installers/pyright.lua | 15 +++++ lua/nvim-lsp-installer/installers/python-ls.lua | 15 ----- lua/nvim-lsp-installer/installers/ruby-ls.lua | 36 ---------- lua/nvim-lsp-installer/installers/solargraph.lua | 36 ++++++++++ lua/nvim-lsp-installer/installers/sumneko_lua.lua | 59 ++++++++++++++++ lua/nvim-lsp-installer/installers/tsserver.lua | 50 ++++++++++++++ .../installers/typescript-ls.lua | 50 -------------- lua/nvim-lsp-installer/installers/vim-ls.lua | 14 ---- lua/nvim-lsp-installer/installers/vimls.lua | 14 ++++ lua/nvim-lsp-installer/installers/yaml-ls.lua | 14 ---- lua/nvim-lsp-installer/installers/yamlls.lua | 14 ++++ 28 files changed, 366 insertions(+), 367 deletions(-) delete mode 100644 lua/nvim-lsp-installer/installers/bash-ls.lua create mode 100644 lua/nvim-lsp-installer/installers/bashls.lua delete mode 100644 lua/nvim-lsp-installer/installers/css-ls.lua create mode 100644 lua/nvim-lsp-installer/installers/cssls.lua delete mode 100644 lua/nvim-lsp-installer/installers/docker-ls.lua create mode 100644 lua/nvim-lsp-installer/installers/dockerls.lua delete mode 100644 lua/nvim-lsp-installer/installers/eslint-ls.lua create mode 100644 lua/nvim-lsp-installer/installers/eslintls.lua delete mode 100644 lua/nvim-lsp-installer/installers/graphql-ls.lua create mode 100644 lua/nvim-lsp-installer/installers/graphql.lua delete mode 100644 lua/nvim-lsp-installer/installers/html-ls.lua create mode 100644 lua/nvim-lsp-installer/installers/html.lua delete mode 100644 lua/nvim-lsp-installer/installers/json-ls.lua create mode 100644 lua/nvim-lsp-installer/installers/jsonls.lua delete mode 100644 lua/nvim-lsp-installer/installers/lua-ls.lua create mode 100644 lua/nvim-lsp-installer/installers/pyright.lua delete mode 100644 lua/nvim-lsp-installer/installers/python-ls.lua delete mode 100644 lua/nvim-lsp-installer/installers/ruby-ls.lua create mode 100644 lua/nvim-lsp-installer/installers/solargraph.lua create mode 100644 lua/nvim-lsp-installer/installers/sumneko_lua.lua create mode 100644 lua/nvim-lsp-installer/installers/tsserver.lua delete mode 100644 lua/nvim-lsp-installer/installers/typescript-ls.lua delete mode 100644 lua/nvim-lsp-installer/installers/vim-ls.lua create mode 100644 lua/nvim-lsp-installer/installers/vimls.lua delete mode 100644 lua/nvim-lsp-installer/installers/yaml-ls.lua create mode 100644 lua/nvim-lsp-installer/installers/yamlls.lua diff --git a/README.md b/README.md index 6549e878..bad9797a 100644 --- a/README.md +++ b/README.md @@ -84,6 +84,5 @@ require'nvim-lsp-installer'.get_installer('tsserver').extras.organize_imports(bu ## TODO - installer... server... module.... pick one!! -- use same lsp server names as lspconfig does - docs - nicer API for accessing extras diff --git a/lua/nvim-lsp-installer/installer.lua b/lua/nvim-lsp-installer/installer.lua index d0acd8cf..59401e5c 100644 --- a/lua/nvim-lsp-installer/installer.lua +++ b/lua/nvim-lsp-installer/installer.lua @@ -1,18 +1,18 @@ local M = {} local _INSTALLERS = { - 'vim-ls', - 'graphql-ls', - 'lua-ls', - 'typescript-ls', - 'css-ls', - 'html-ls', - 'json-ls', - 'yaml-ls', - 'bash-ls', - 'docker-ls', - 'ruby-ls', - 'eslint-ls', + 'bashls', + 'cssls', + 'dockerls', + 'eslintls', + 'graphql', + 'html', + 'jsonls', + 'solargraph', + 'sumneko_lua', + 'tsserver', + 'vimls', + 'yamlls', } local function escape_quotes(str) diff --git a/lua/nvim-lsp-installer/installers/bash-ls.lua b/lua/nvim-lsp-installer/installers/bash-ls.lua deleted file mode 100644 index d784ca51..00000000 --- a/lua/nvim-lsp-installer/installers/bash-ls.lua +++ /dev/null @@ -1,14 +0,0 @@ -local installer = require('nvim-lsp-installer.installer') -local capabilities = require('nvim-lsp-installer.capabilities') - -local root_dir = installer.get_server_root_path('bash') - -return installer.create_lsp_config_installer { - name = "bashls", - root_dir = root_dir, - install_cmd = [[npm install bash-language-server@latest]], - default_options = { - cmd = { root_dir .. "/node_modules/.bin/bash-language-server", "start" }, - capabilities = capabilities.create(), - }, -} diff --git a/lua/nvim-lsp-installer/installers/bashls.lua b/lua/nvim-lsp-installer/installers/bashls.lua new file mode 100644 index 00000000..d784ca51 --- /dev/null +++ b/lua/nvim-lsp-installer/installers/bashls.lua @@ -0,0 +1,14 @@ +local installer = require('nvim-lsp-installer.installer') +local capabilities = require('nvim-lsp-installer.capabilities') + +local root_dir = installer.get_server_root_path('bash') + +return installer.create_lsp_config_installer { + name = "bashls", + root_dir = root_dir, + install_cmd = [[npm install bash-language-server@latest]], + default_options = { + cmd = { root_dir .. "/node_modules/.bin/bash-language-server", "start" }, + capabilities = capabilities.create(), + }, +} diff --git a/lua/nvim-lsp-installer/installers/css-ls.lua b/lua/nvim-lsp-installer/installers/css-ls.lua deleted file mode 100644 index de9a5462..00000000 --- a/lua/nvim-lsp-installer/installers/css-ls.lua +++ /dev/null @@ -1,14 +0,0 @@ -local installer = require('nvim-lsp-installer.installer') -local capabilities = require('nvim-lsp-installer.capabilities') - -local root_dir = installer.get_server_root_path('css') - -return installer.create_lsp_config_installer { - name = 'cssls', - root_dir = root_dir, - install_cmd = [[npm install vscode-css-languageserver-bin]], - default_options = { - cmd = { root_dir .. '/node_modules/.bin/css-languageserver', '--stdio' }, - capabilities = capabilities.create(), - }, -} diff --git a/lua/nvim-lsp-installer/installers/cssls.lua b/lua/nvim-lsp-installer/installers/cssls.lua new file mode 100644 index 00000000..de9a5462 --- /dev/null +++ b/lua/nvim-lsp-installer/installers/cssls.lua @@ -0,0 +1,14 @@ +local installer = require('nvim-lsp-installer.installer') +local capabilities = require('nvim-lsp-installer.capabilities') + +local root_dir = installer.get_server_root_path('css') + +return installer.create_lsp_config_installer { + name = 'cssls', + root_dir = root_dir, + install_cmd = [[npm install vscode-css-languageserver-bin]], + default_options = { + cmd = { root_dir .. '/node_modules/.bin/css-languageserver', '--stdio' }, + capabilities = capabilities.create(), + }, +} diff --git a/lua/nvim-lsp-installer/installers/docker-ls.lua b/lua/nvim-lsp-installer/installers/docker-ls.lua deleted file mode 100644 index 4b6d660f..00000000 --- a/lua/nvim-lsp-installer/installers/docker-ls.lua +++ /dev/null @@ -1,14 +0,0 @@ -local installer = require('nvim-lsp-installer.installer') -local capabilities = require('nvim-lsp-installer.capabilities') - -local root_dir = installer.get_server_root_path('dockerfile') - -return installer.create_lsp_config_installer { - name = 'dockerls', - root_dir = root_dir, - install_cmd = [[npm install dockerfile-language-server-nodejs@latest]], - default_options = { - cmd = { root_dir .. '/node_modules/.bin/docker-langserver', '--stdio' }, - capabilities = capabilities.create(), - }, -} diff --git a/lua/nvim-lsp-installer/installers/dockerls.lua b/lua/nvim-lsp-installer/installers/dockerls.lua new file mode 100644 index 00000000..4b6d660f --- /dev/null +++ b/lua/nvim-lsp-installer/installers/dockerls.lua @@ -0,0 +1,14 @@ +local installer = require('nvim-lsp-installer.installer') +local capabilities = require('nvim-lsp-installer.capabilities') + +local root_dir = installer.get_server_root_path('dockerfile') + +return installer.create_lsp_config_installer { + name = 'dockerls', + root_dir = root_dir, + install_cmd = [[npm install dockerfile-language-server-nodejs@latest]], + default_options = { + cmd = { root_dir .. '/node_modules/.bin/docker-langserver', '--stdio' }, + capabilities = capabilities.create(), + }, +} diff --git a/lua/nvim-lsp-installer/installers/eslint-ls.lua b/lua/nvim-lsp-installer/installers/eslint-ls.lua deleted file mode 100644 index 1682209b..00000000 --- a/lua/nvim-lsp-installer/installers/eslint-ls.lua +++ /dev/null @@ -1,78 +0,0 @@ -local lspconfig = require'lspconfig' -local configs = require'lspconfig/configs' - -local installer = require'nvim-lsp-installer.installer' - -if not lspconfig.eslintls then - configs.eslintls = { - default_config = { - filetypes = {'javascript', 'javascriptreact', 'typescript', 'typescriptreact'}, - root_dir = lspconfig.util.root_pattern(".eslintrc*", "package.json", ".git"), - settings = { - nodePath = '', -- If this is a non-null/undefined value the eslint LSP runs into runtime exceptions. - validate = 'on', - run = 'onType', - workingDirectory = {mode = "auto"}, - workspaceFolder = { - uri = "/", - name = "root", - }, - codeAction = { - disableRuleComment = { - enable = true, - location = "sameLine", - }, - showDocumentation = { - enable = true - } - }, - }, - }, - } -end - -local ConfirmExecutionResult = { - deny = 1, - confirmationPending = 2, - confirmationCanceled = 3, - approved = 4 -} - -local root_dir = installer.get_server_root_path('eslint') -local install_cmd = [[ -git clone https://github.com/microsoft/vscode-eslint .; -npm install; -cd server; -npm install; -npx tsc; -]] - -return installer.create_lsp_config_installer { - name = "eslintls", - root_dir = root_dir, - install_cmd = install_cmd, - default_options = { - cmd = {'node', root_dir .. '/server/out/eslintServer.js', '--stdio'}, - handlers = { - ["eslint/openDoc"] = function (_, _, open_doc) - os.execute("open " .. open_doc.url) - return {id = nil, result = true} - end, - ["eslint/confirmESLintExecution"] = function () - return ConfirmExecutionResult.approved - end, - ["eslint/probeFailed"] = function () - vim.api.nvim_err_writeln('ESLint probe failed.') - return {id = nil, result = true} - end, - ["eslint/noLibrary"] = function () - vim.api.nvim_err_writeln('Unable to find ESLint library.') - return {id = nil, result = true} - end, - ["eslint/noConfig"] = function () - vim.api.nvim_err_writeln('Unable to find ESLint configuration.') - return {id = nil, result = true} - end, - }, - }, -} diff --git a/lua/nvim-lsp-installer/installers/eslintls.lua b/lua/nvim-lsp-installer/installers/eslintls.lua new file mode 100644 index 00000000..1682209b --- /dev/null +++ b/lua/nvim-lsp-installer/installers/eslintls.lua @@ -0,0 +1,78 @@ +local lspconfig = require'lspconfig' +local configs = require'lspconfig/configs' + +local installer = require'nvim-lsp-installer.installer' + +if not lspconfig.eslintls then + configs.eslintls = { + default_config = { + filetypes = {'javascript', 'javascriptreact', 'typescript', 'typescriptreact'}, + root_dir = lspconfig.util.root_pattern(".eslintrc*", "package.json", ".git"), + settings = { + nodePath = '', -- If this is a non-null/undefined value the eslint LSP runs into runtime exceptions. + validate = 'on', + run = 'onType', + workingDirectory = {mode = "auto"}, + workspaceFolder = { + uri = "/", + name = "root", + }, + codeAction = { + disableRuleComment = { + enable = true, + location = "sameLine", + }, + showDocumentation = { + enable = true + } + }, + }, + }, + } +end + +local ConfirmExecutionResult = { + deny = 1, + confirmationPending = 2, + confirmationCanceled = 3, + approved = 4 +} + +local root_dir = installer.get_server_root_path('eslint') +local install_cmd = [[ +git clone https://github.com/microsoft/vscode-eslint .; +npm install; +cd server; +npm install; +npx tsc; +]] + +return installer.create_lsp_config_installer { + name = "eslintls", + root_dir = root_dir, + install_cmd = install_cmd, + default_options = { + cmd = {'node', root_dir .. '/server/out/eslintServer.js', '--stdio'}, + handlers = { + ["eslint/openDoc"] = function (_, _, open_doc) + os.execute("open " .. open_doc.url) + return {id = nil, result = true} + end, + ["eslint/confirmESLintExecution"] = function () + return ConfirmExecutionResult.approved + end, + ["eslint/probeFailed"] = function () + vim.api.nvim_err_writeln('ESLint probe failed.') + return {id = nil, result = true} + end, + ["eslint/noLibrary"] = function () + vim.api.nvim_err_writeln('Unable to find ESLint library.') + return {id = nil, result = true} + end, + ["eslint/noConfig"] = function () + vim.api.nvim_err_writeln('Unable to find ESLint configuration.') + return {id = nil, result = true} + end, + }, + }, +} diff --git a/lua/nvim-lsp-installer/installers/graphql-ls.lua b/lua/nvim-lsp-installer/installers/graphql-ls.lua deleted file mode 100644 index b7d5968c..00000000 --- a/lua/nvim-lsp-installer/installers/graphql-ls.lua +++ /dev/null @@ -1,18 +0,0 @@ -local util = require('lspconfig.util') - -local installer = require('nvim-lsp-installer.installer') -local capabilities = require('nvim-lsp-installer.capabilities') - -local root_dir = installer.get_server_root_path('graphql') - -return installer.create_lsp_config_installer { - name = "graphql", - root_dir = root_dir, - install_cmd = [[npm install graphql-language-service-cli@latest graphql]], - default_options = { - cmd = { root_dir .. "/node_modules/.bin/graphql-lsp", "server", "-m", "stream" }, - filetypes = { 'typescriptreact', 'javascriptreact', 'graphql' }, - root_dir = util.root_pattern('.git', '.graphqlrc'), - capabilities = capabilities.create(), - }, -} diff --git a/lua/nvim-lsp-installer/installers/graphql.lua b/lua/nvim-lsp-installer/installers/graphql.lua new file mode 100644 index 00000000..b7d5968c --- /dev/null +++ b/lua/nvim-lsp-installer/installers/graphql.lua @@ -0,0 +1,18 @@ +local util = require('lspconfig.util') + +local installer = require('nvim-lsp-installer.installer') +local capabilities = require('nvim-lsp-installer.capabilities') + +local root_dir = installer.get_server_root_path('graphql') + +return installer.create_lsp_config_installer { + name = "graphql", + root_dir = root_dir, + install_cmd = [[npm install graphql-language-service-cli@latest graphql]], + default_options = { + cmd = { root_dir .. "/node_modules/.bin/graphql-lsp", "server", "-m", "stream" }, + filetypes = { 'typescriptreact', 'javascriptreact', 'graphql' }, + root_dir = util.root_pattern('.git', '.graphqlrc'), + capabilities = capabilities.create(), + }, +} diff --git a/lua/nvim-lsp-installer/installers/html-ls.lua b/lua/nvim-lsp-installer/installers/html-ls.lua deleted file mode 100644 index ddcf4771..00000000 --- a/lua/nvim-lsp-installer/installers/html-ls.lua +++ /dev/null @@ -1,14 +0,0 @@ -local installer = require('nvim-lsp-installer.installer') -local capabilities = require('nvim-lsp-installer.capabilities') - -local root_dir = installer.get_server_root_path('html') - -return installer.create_lsp_config_installer { - name = "html", - root_dir = root_dir, - install_cmd = [[npm install vscode-html-languageserver-bin]], - default_options = { - cmd = { root_dir .. '/node_modules/.bin/html-languageserver', '--stdio' }, - capabilities = capabilities.create(), - }, -} diff --git a/lua/nvim-lsp-installer/installers/html.lua b/lua/nvim-lsp-installer/installers/html.lua new file mode 100644 index 00000000..ddcf4771 --- /dev/null +++ b/lua/nvim-lsp-installer/installers/html.lua @@ -0,0 +1,14 @@ +local installer = require('nvim-lsp-installer.installer') +local capabilities = require('nvim-lsp-installer.capabilities') + +local root_dir = installer.get_server_root_path('html') + +return installer.create_lsp_config_installer { + name = "html", + root_dir = root_dir, + install_cmd = [[npm install vscode-html-languageserver-bin]], + default_options = { + cmd = { root_dir .. '/node_modules/.bin/html-languageserver', '--stdio' }, + capabilities = capabilities.create(), + }, +} diff --git a/lua/nvim-lsp-installer/installers/json-ls.lua b/lua/nvim-lsp-installer/installers/json-ls.lua deleted file mode 100644 index 35bf792f..00000000 --- a/lua/nvim-lsp-installer/installers/json-ls.lua +++ /dev/null @@ -1,14 +0,0 @@ -local installer = require('nvim-lsp-installer.installer') -local capabilities = require('nvim-lsp-installer.capabilities') - -local root_dir = installer.get_server_root_path('json') - -return installer.create_lsp_config_installer { - name = "jsonls", - root_dir = root_dir, - install_cmd = [[npm install vscode-json-languageserver-bin]], - default_options = { - cmd = { root_dir .. '/node_modules/.bin/json-languageserver', '--stdio' }, - capabilities = capabilities.create(), - }, -} diff --git a/lua/nvim-lsp-installer/installers/jsonls.lua b/lua/nvim-lsp-installer/installers/jsonls.lua new file mode 100644 index 00000000..35bf792f --- /dev/null +++ b/lua/nvim-lsp-installer/installers/jsonls.lua @@ -0,0 +1,14 @@ +local installer = require('nvim-lsp-installer.installer') +local capabilities = require('nvim-lsp-installer.capabilities') + +local root_dir = installer.get_server_root_path('json') + +return installer.create_lsp_config_installer { + name = "jsonls", + root_dir = root_dir, + install_cmd = [[npm install vscode-json-languageserver-bin]], + default_options = { + cmd = { root_dir .. '/node_modules/.bin/json-languageserver', '--stdio' }, + capabilities = capabilities.create(), + }, +} diff --git a/lua/nvim-lsp-installer/installers/lua-ls.lua b/lua/nvim-lsp-installer/installers/lua-ls.lua deleted file mode 100644 index 0c2bd08f..00000000 --- a/lua/nvim-lsp-installer/installers/lua-ls.lua +++ /dev/null @@ -1,59 +0,0 @@ -local installer = require('nvim-lsp-installer.installer') -local capabilities = require('nvim-lsp-installer.capabilities') - -local root_dir = installer.get_server_root_path('lua') - -local install_cmd = [=[ -rm -rf lua-language-server; -git clone https://github.com/sumneko/lua-language-server; -cd lua-language-server/; -git submodule update --init --recursive; -cd 3rd/luamake; -if [[ $(uname) == Darwin ]]; then - ninja -f ninja/macos.ninja; -elif [[ $(uname) == Linux ]]; then - ninja -f ninja/linux.ninja; -else - >&2 echo "$(uname) not supported."; - exit 1; -fi -cd ../../; -./3rd/luamake/luamake rebuild; -]=] - -local uname_alias = { - Darwin = 'macOS', -} -local uname = vim.fn.system('uname'):gsub("%s+", "") -local bin_dir = uname_alias[uname] or uname - -return installer.create_lsp_config_installer { - name = "sumneko_lua", - root_dir = root_dir, - install_cmd = install_cmd, - pre_install = function() - if vim.fn.executable('ninja') ~= 1 then - error("ninja not installed (see https://github.com/ninja-build/ninja/wiki/Pre-built-Ninja-packages)") - end - end, - default_options = { - cmd = { root_dir .. "/lua-language-server/bin/" .. bin_dir .. "/lua-language-server" , "-E", root_dir .. "/lua-language-server/main.lua"}, - capabilities = capabilities.create(), - settings = { - Lua = { - diagnostics = { - -- Get the language server to recognize the `vim` global - globals = {'vim'} - }, - workspace = { - -- Make the server aware of Neovim runtime files - library = { - [vim.fn.expand('$VIMRUNTIME/lua')] = true, - [vim.fn.expand('$VIMRUNTIME/lua/vim/lsp')] = true, - }, - maxPreload = 10000 - } - } - }, - } -} diff --git a/lua/nvim-lsp-installer/installers/pyright.lua b/lua/nvim-lsp-installer/installers/pyright.lua new file mode 100644 index 00000000..3de489d0 --- /dev/null +++ b/lua/nvim-lsp-installer/installers/pyright.lua @@ -0,0 +1,15 @@ +local installer = require('nvim-lsp-installer.installer') +local capabilities = require('nvim-lsp-installer.capabilities') + +local root_dir = installer.get_server_root_path('python') + +return installer.create_lsp_config_installer { + name = "pyright", + root_dir = root_dir, + install_cmd = [[npm install pyright]], + default_options = { + cmd = { root_dir .. '/node_modules/.bin/pyright-langserver', '--stdio' }, + capabilities = capabilities.create(), + on_attach = installer.common_on_attach, + }, +} diff --git a/lua/nvim-lsp-installer/installers/python-ls.lua b/lua/nvim-lsp-installer/installers/python-ls.lua deleted file mode 100644 index 3de489d0..00000000 --- a/lua/nvim-lsp-installer/installers/python-ls.lua +++ /dev/null @@ -1,15 +0,0 @@ -local installer = require('nvim-lsp-installer.installer') -local capabilities = require('nvim-lsp-installer.capabilities') - -local root_dir = installer.get_server_root_path('python') - -return installer.create_lsp_config_installer { - name = "pyright", - root_dir = root_dir, - install_cmd = [[npm install pyright]], - default_options = { - cmd = { root_dir .. '/node_modules/.bin/pyright-langserver', '--stdio' }, - capabilities = capabilities.create(), - on_attach = installer.common_on_attach, - }, -} diff --git a/lua/nvim-lsp-installer/installers/ruby-ls.lua b/lua/nvim-lsp-installer/installers/ruby-ls.lua deleted file mode 100644 index 634ae90e..00000000 --- a/lua/nvim-lsp-installer/installers/ruby-ls.lua +++ /dev/null @@ -1,36 +0,0 @@ -local installer = require('nvim-lsp-installer.installer') -local capabilities = require('nvim-lsp-installer.capabilities') - -local root_dir = installer.get_server_root_path('ruby') - -local install_cmd = [[ -wget -O solargraph.tar $(curl -s https://api.github.com/repos/castwide/solargraph/tags | grep 'tarball_url' | cut -d\" -f4 | head -n1); -rm -rf solargraph; -mkdir solargraph; -tar -xzf solargraph.tar -C solargraph --strip-components 1; -rm solargraph.tar; -cd solargraph; - -bundle install --without development --path vendor/bundle; - -echo '#!/usr/bin/env bash' > solargraph; -echo 'cd "$(dirname "$0")" || exit' >> solargraph; -echo 'bundle exec solargraph $*' >> solargraph; - -chmod +x solargraph; -]] - -return installer.create_lsp_config_installer { - name = "pyright", - root_dir = root_dir, - install_cmd = install_cmd, - pre_install = function () - if vim.fn.executable('bundle') ~= 1 then - error("bundle not installed") - end - end, - default_options = { - cmd = { root_dir .. '/solargraph/solargraph', 'stdio' }, - capabilities = capabilities.create(), - } -} diff --git a/lua/nvim-lsp-installer/installers/solargraph.lua b/lua/nvim-lsp-installer/installers/solargraph.lua new file mode 100644 index 00000000..c902632b --- /dev/null +++ b/lua/nvim-lsp-installer/installers/solargraph.lua @@ -0,0 +1,36 @@ +local installer = require('nvim-lsp-installer.installer') +local capabilities = require('nvim-lsp-installer.capabilities') + +local root_dir = installer.get_server_root_path('ruby') + +local install_cmd = [[ +wget -O solargraph.tar $(curl -s https://api.github.com/repos/castwide/solargraph/tags | grep 'tarball_url' | cut -d\" -f4 | head -n1); +rm -rf solargraph; +mkdir solargraph; +tar -xzf solargraph.tar -C solargraph --strip-components 1; +rm solargraph.tar; +cd solargraph; + +bundle install --without development --path vendor/bundle; + +echo '#!/usr/bin/env bash' > solargraph; +echo 'cd "$(dirname "$0")" || exit' >> solargraph; +echo 'bundle exec solargraph $*' >> solargraph; + +chmod +x solargraph; +]] + +return installer.create_lsp_config_installer { + name = "solargraph", + root_dir = root_dir, + install_cmd = install_cmd, + pre_install = function () + if vim.fn.executable('bundle') ~= 1 then + error("bundle not installed") + end + end, + default_options = { + cmd = { root_dir .. '/solargraph/solargraph', 'stdio' }, + capabilities = capabilities.create(), + } +} diff --git a/lua/nvim-lsp-installer/installers/sumneko_lua.lua b/lua/nvim-lsp-installer/installers/sumneko_lua.lua new file mode 100644 index 00000000..0c2bd08f --- /dev/null +++ b/lua/nvim-lsp-installer/installers/sumneko_lua.lua @@ -0,0 +1,59 @@ +local installer = require('nvim-lsp-installer.installer') +local capabilities = require('nvim-lsp-installer.capabilities') + +local root_dir = installer.get_server_root_path('lua') + +local install_cmd = [=[ +rm -rf lua-language-server; +git clone https://github.com/sumneko/lua-language-server; +cd lua-language-server/; +git submodule update --init --recursive; +cd 3rd/luamake; +if [[ $(uname) == Darwin ]]; then + ninja -f ninja/macos.ninja; +elif [[ $(uname) == Linux ]]; then + ninja -f ninja/linux.ninja; +else + >&2 echo "$(uname) not supported."; + exit 1; +fi +cd ../../; +./3rd/luamake/luamake rebuild; +]=] + +local uname_alias = { + Darwin = 'macOS', +} +local uname = vim.fn.system('uname'):gsub("%s+", "") +local bin_dir = uname_alias[uname] or uname + +return installer.create_lsp_config_installer { + name = "sumneko_lua", + root_dir = root_dir, + install_cmd = install_cmd, + pre_install = function() + if vim.fn.executable('ninja') ~= 1 then + error("ninja not installed (see https://github.com/ninja-build/ninja/wiki/Pre-built-Ninja-packages)") + end + end, + default_options = { + cmd = { root_dir .. "/lua-language-server/bin/" .. bin_dir .. "/lua-language-server" , "-E", root_dir .. "/lua-language-server/main.lua"}, + capabilities = capabilities.create(), + settings = { + Lua = { + diagnostics = { + -- Get the language server to recognize the `vim` global + globals = {'vim'} + }, + workspace = { + -- Make the server aware of Neovim runtime files + library = { + [vim.fn.expand('$VIMRUNTIME/lua')] = true, + [vim.fn.expand('$VIMRUNTIME/lua/vim/lsp')] = true, + }, + maxPreload = 10000 + } + } + }, + } +} diff --git a/lua/nvim-lsp-installer/installers/tsserver.lua b/lua/nvim-lsp-installer/installers/tsserver.lua new file mode 100644 index 00000000..eef82503 --- /dev/null +++ b/lua/nvim-lsp-installer/installers/tsserver.lua @@ -0,0 +1,50 @@ +local installer = require('nvim-lsp-installer.installer') +local capabilities = require('nvim-lsp-installer.capabilities') + +local root_dir = installer.get_server_root_path('tsserver') + +return installer.create_lsp_config_installer { + name = "tsserver", + root_dir = root_dir, + install_cmd = [[npm install typescript-language-server]], + default_options = { + cmd = { root_dir .. '/node_modules/.bin/typescript-language-server', '--stdio' }, + capabilities = capabilities.create(), + }, + extras = { + rename_file = function(old, new) + local old_uri = vim.uri_from_fname(old) + local new_uri = vim.uri_from_fname(new) + + -- TODO: send only to tsserver + for _, client in pairs(vim.lsp.get_active_clients()) do + client.request( + 'workspace/executeCommand', + { + command = '_typescript.applyRenameFile', + arguments = { + { + sourceUri = old_uri, + targetUri = new_uri, + }, + }, + } + ) + end + end, + organize_imports = function(bufname) + bufname = bufname or vim.api.nvim_buf_get_name(0) + + -- TODO: send only to tsserver + for _, client in pairs(vim.lsp.get_active_clients()) do + client.request( + 'workspace/executeCommand', + { + command = '_typescript.organizeImports', + arguments = {bufname}, + } + ) + end + end, + } +} diff --git a/lua/nvim-lsp-installer/installers/typescript-ls.lua b/lua/nvim-lsp-installer/installers/typescript-ls.lua deleted file mode 100644 index eef82503..00000000 --- a/lua/nvim-lsp-installer/installers/typescript-ls.lua +++ /dev/null @@ -1,50 +0,0 @@ -local installer = require('nvim-lsp-installer.installer') -local capabilities = require('nvim-lsp-installer.capabilities') - -local root_dir = installer.get_server_root_path('tsserver') - -return installer.create_lsp_config_installer { - name = "tsserver", - root_dir = root_dir, - install_cmd = [[npm install typescript-language-server]], - default_options = { - cmd = { root_dir .. '/node_modules/.bin/typescript-language-server', '--stdio' }, - capabilities = capabilities.create(), - }, - extras = { - rename_file = function(old, new) - local old_uri = vim.uri_from_fname(old) - local new_uri = vim.uri_from_fname(new) - - -- TODO: send only to tsserver - for _, client in pairs(vim.lsp.get_active_clients()) do - client.request( - 'workspace/executeCommand', - { - command = '_typescript.applyRenameFile', - arguments = { - { - sourceUri = old_uri, - targetUri = new_uri, - }, - }, - } - ) - end - end, - organize_imports = function(bufname) - bufname = bufname or vim.api.nvim_buf_get_name(0) - - -- TODO: send only to tsserver - for _, client in pairs(vim.lsp.get_active_clients()) do - client.request( - 'workspace/executeCommand', - { - command = '_typescript.organizeImports', - arguments = {bufname}, - } - ) - end - end, - } -} diff --git a/lua/nvim-lsp-installer/installers/vim-ls.lua b/lua/nvim-lsp-installer/installers/vim-ls.lua deleted file mode 100644 index f13a5308..00000000 --- a/lua/nvim-lsp-installer/installers/vim-ls.lua +++ /dev/null @@ -1,14 +0,0 @@ -local installer = require('nvim-lsp-installer.installer') -local capabilities = require('nvim-lsp-installer.capabilities') - -local root_dir = installer.get_server_root_path('vim') - -return installer.create_lsp_config_installer { - name = "vimls", - root_dir = root_dir, - install_cmd = [[npm install vim-language-server@latest]], - default_options = { - cmd = { root_dir .. "/node_modules/.bin/vim-language-server", "--stdio" }, - capabilities = capabilities.create(), - } -} diff --git a/lua/nvim-lsp-installer/installers/vimls.lua b/lua/nvim-lsp-installer/installers/vimls.lua new file mode 100644 index 00000000..f13a5308 --- /dev/null +++ b/lua/nvim-lsp-installer/installers/vimls.lua @@ -0,0 +1,14 @@ +local installer = require('nvim-lsp-installer.installer') +local capabilities = require('nvim-lsp-installer.capabilities') + +local root_dir = installer.get_server_root_path('vim') + +return installer.create_lsp_config_installer { + name = "vimls", + root_dir = root_dir, + install_cmd = [[npm install vim-language-server@latest]], + default_options = { + cmd = { root_dir .. "/node_modules/.bin/vim-language-server", "--stdio" }, + capabilities = capabilities.create(), + } +} diff --git a/lua/nvim-lsp-installer/installers/yaml-ls.lua b/lua/nvim-lsp-installer/installers/yaml-ls.lua deleted file mode 100644 index 89d0a976..00000000 --- a/lua/nvim-lsp-installer/installers/yaml-ls.lua +++ /dev/null @@ -1,14 +0,0 @@ -local installer = require('nvim-lsp-installer.installer') -local capabilities = require('nvim-lsp-installer.capabilities') - -local root_dir = installer.get_server_root_path('yaml') - -return installer.create_lsp_config_installer { - name = "yamlls", - root_dir = root_dir, - install_cmd = [[npm install yaml-language-server]], - default_options = { - cmd = { root_dir .. '/node_modules/.bin/yaml-language-server', '--stdio' }, - capabilities = capabilities.create(), - } -} diff --git a/lua/nvim-lsp-installer/installers/yamlls.lua b/lua/nvim-lsp-installer/installers/yamlls.lua new file mode 100644 index 00000000..89d0a976 --- /dev/null +++ b/lua/nvim-lsp-installer/installers/yamlls.lua @@ -0,0 +1,14 @@ +local installer = require('nvim-lsp-installer.installer') +local capabilities = require('nvim-lsp-installer.capabilities') + +local root_dir = installer.get_server_root_path('yaml') + +return installer.create_lsp_config_installer { + name = "yamlls", + root_dir = root_dir, + install_cmd = [[npm install yaml-language-server]], + default_options = { + cmd = { root_dir .. '/node_modules/.bin/yaml-language-server', '--stdio' }, + capabilities = capabilities.create(), + } +} -- cgit v1.2.3-70-g09d2