From eb01aca460d3a657c8fda36e64d101d85dbd9f78 Mon Sep 17 00:00:00 2001 From: Ashkan Kiani Date: Tue, 26 Nov 2019 06:01:11 -0800 Subject: Add sumneko_lua installation and util.sh helper. (#49) * Add sumneko_lua installation and util.sh helper. * Add vspackage extraction for package.json information via vscode name. * Allow specifying a tempdir at DOCGEN_TEMPDIR * Fix on_new_config and add docs for root_dir * User settings titles are not always useful --- lua/nvim_lsp.lua | 3 +- lua/nvim_lsp/hie.lua | 1 + lua/nvim_lsp/rls.lua | 1 + lua/nvim_lsp/sumneko_lua.lua | 105 +++++++++++++++++++++++++++++++++++++++++++ lua/nvim_lsp/util.lua | 61 +++++++++++++++++++++++++ 5 files changed, 170 insertions(+), 1 deletion(-) create mode 100644 lua/nvim_lsp/sumneko_lua.lua (limited to 'lua') diff --git a/lua/nvim_lsp.lua b/lua/nvim_lsp.lua index 2e00f079..1d5c35e0 100644 --- a/lua/nvim_lsp.lua +++ b/lua/nvim_lsp.lua @@ -2,8 +2,8 @@ local skeleton = require 'nvim_lsp/skeleton' require 'nvim_lsp/bashls' require 'nvim_lsp/ccls' -require 'nvim_lsp/cssls' require 'nvim_lsp/clangd' +require 'nvim_lsp/cssls' require 'nvim_lsp/elmls' require 'nvim_lsp/flow' require 'nvim_lsp/gopls' @@ -11,6 +11,7 @@ require 'nvim_lsp/hie' require 'nvim_lsp/pyls' require 'nvim_lsp/rls' require 'nvim_lsp/solargraph' +require 'nvim_lsp/sumneko_lua' require 'nvim_lsp/texlab' require 'nvim_lsp/tsserver' diff --git a/lua/nvim_lsp/hie.lua b/lua/nvim_lsp/hie.lua index dac2f7c8..cb18a164 100644 --- a/lua/nvim_lsp/hie.lua +++ b/lua/nvim_lsp/hie.lua @@ -12,6 +12,7 @@ skeleton.hie = { }; docs = { + vscode = "alanz.vscode-hie-server"; description = [[ https://github.com/haskell/haskell-ide-engine diff --git a/lua/nvim_lsp/rls.lua b/lua/nvim_lsp/rls.lua index efecd34d..28067999 100644 --- a/lua/nvim_lsp/rls.lua +++ b/lua/nvim_lsp/rls.lua @@ -11,6 +11,7 @@ skeleton.rls = { settings = {}; }; docs = { + vscode = "rust-lang.rust"; package_json = "https://github.com/rust-lang/rls-vscode/raw/master/package.json"; description = [[ https://github.com/rust-lang/rls diff --git a/lua/nvim_lsp/sumneko_lua.lua b/lua/nvim_lsp/sumneko_lua.lua new file mode 100644 index 00000000..365253cb --- /dev/null +++ b/lua/nvim_lsp/sumneko_lua.lua @@ -0,0 +1,105 @@ +local skeleton = require 'nvim_lsp/skeleton' +local util = require 'nvim_lsp/util' +local vim = vim + +local name = "sumneko_lua" + +local function make_installer() + local P = util.path.join + local install_dir = P{util.base_install_dir, name} + local git_dir = P{install_dir, "lua-language-server"} + + local bin = P{git_dir, "bin", "Linux", "lua-language-server"} + local main_file = P{git_dir, "main.lua"} + local cmd = {bin, '-E', main_file} + + local X = {} + function X.install() + local install_info = X.info() + if install_info.is_installed then + print(name, "is already installed") + return + end + if not (util.has_bins("ninja") or util.has_bins("curl")) then + error('Need either "ninja" or "curl" (to download ninja) to install this.') + return + end + if not util.has_bins("sh", "chmod", "unzip") then + error('Need the binaries "sh", "chmod", "unzip" to install this') + return + end + local script = [=[ +set -e +# Install ninja if not available. +which ninja >/dev/null || { + test -x ninja || { + curl -LO https://github.com/ninja-build/ninja/releases/download/v1.9.0/ninja-linux.zip + unzip ninja-linux.zip + chmod +x ninja + } + export PATH=$PWD:$PATH +} + +# clone project +git clone https://github.com/sumneko/lua-language-server +cd lua-language-server +git submodule update --init --recursive + +# build +cd 3rd/luamake +ninja -f ninja/linux.ninja +cd ../.. +./3rd/luamake/luamake rebuild + ]=] + vim.fn.mkdir(install_info.install_dir, "p") + util.sh(script, install_info.install_dir) + end + function X.info() + return { + is_installed = util.has_bins(bin); + install_dir = install_dir; + cmd = cmd; + }