diff options
66 files changed, 611 insertions, 357 deletions
@@ -1 +1,2 @@ servers/* +unzip.exe @@ -1,6 +1,6 @@ # vim-lsp-settings -Auto configurations for Language Server for vim-lsp +Auto configurations for Language Server for [vim-lsp](https://github.com/prabirshrestha/vim-lsp) ## Introduction @@ -11,11 +11,28 @@ Language Servers is not easily to install. Visual Studio Code provide easy way t For [vim-plug](https://github.com/junegunn/vim-plug) plugin manager: ```viml +Plug 'prabirshrestha/async.vim' +Plug 'prabirshrestha/asyncomplete.vim' +Plug 'prabirshrestha/asyncomplete-lsp.vim' +Plug 'prabirshrestha/vim-lsp' Plug 'mattn/vim-lsp-settings' ``` +You need to install both [vim-lsp](https://github.com/prabirshrestha/vim-lsp) and its accompanying plugins and vim-lsp-settings. + +### Notice + +If you use plugin manager that is merging plugins (ex. dein), Please setting stop merging work(ex. dein / merged = 0). + +_reason_: + +Servers are installed in ./servers directory at the caching area. +But when rebuild the cache, any merging plugin manager erases old cached files(include ./servers and server execute files) before install. + ## Usage +If you install rls already, you can use rls without configurations. But if you not installed rls yet, you can install it by following [this instruction](https://github.com/rust-lang/rls#setup). + If you install clangd already, you can use clangd for C/C++ without configurations. But if you install clang with named clangd-6.0, you can replace executable like below: ```vim @@ -51,7 +68,7 @@ Currently, no way to uninstall/update server. Run this command again, newer vers | TypeScript | typescript-language-server | Yes | | JavaScript | javascript-typescript-langserver/typescript-language-server | Yes | | Python | pyls | Yes | -| Rust | rls | Yes | +| Rust | rls | No | | Go | gopls | Yes | | Ruby | solargraph | Yes | | PHP | intelephense | Yes | @@ -67,6 +84,9 @@ Currently, no way to uninstall/update server. Run this command again, newer vers | Scala | Metals | Yes | | Elm | elm-language-server | Yes | | JSON | json-languageserver | Yes | +| Swift | sourcekit-lsp | No | +| COBOL | cobol-language-support | Yes | +| Reason | reason-language-server | Yes | ## License diff --git a/autoload/lsp_settings.vim b/autoload/lsp_settings.vim index d681b01..1685bce 100644 --- a/autoload/lsp_settings.vim +++ b/autoload/lsp_settings.vim @@ -68,3 +68,11 @@ function! lsp_settings#exec_path(cmd) abort endif return '' endfunction + +function! lsp_settings#root_uri(pattern) abort + let l:dir = lsp#utils#find_nearest_parent_file_directory(lsp#utils#get_buffer_path(), a:pattern) + if empty(l:dir) + return lsp#utils#get_default_root_uri() + endif + return lsp#utils#path_to_uri(l:dir) +endfunction diff --git a/installer/install-bash-language-server.cmd b/installer/install-bash-language-server.cmd index 1976dc4..eef3e5e 100644 --- a/installer/install-bash-language-server.cmd +++ b/installer/install-bash-language-server.cmd @@ -1,5 +1,5 @@ -@echo off - -cd %~dp0 - -call npm_install bash-language-server bash-language-server +@echo off
+
+cd /d %~dp0
+
+call npm_install bash-language-server bash-language-server
diff --git a/installer/install-clojure-lsp.cmd b/installer/install-clojure-lsp.cmd index 26754b4..4f667f6 100644 --- a/installer/install-clojure-lsp.cmd +++ b/installer/install-clojure-lsp.cmd @@ -1,7 +1,12 @@ -@echo off - -cd %~dp0 -if exist "..\servers\clojure-lsp" rd /S /Q "..\servers\clojure-lsp" -md "..\servers\clojure-lsp" -cd "..\servers\clojure-lsp" -curl -L -o clojure-lsp.cmd https://github.com/snoe/clojure-lsp/releases/download/release-20191202T142318/clojure-lsp +@echo off
+
+setlocal
+
+cd /d %~dp0
+
+set server_dir=..\servers\clojure-lsp
+if exist %server_dir% rd /Q /S "%server_dir%"
+md "%server_dir%"
+cd /d "%server_dir%"
+
+curl -L -o clojure-lsp.cmd https://github.com/snoe/clojure-lsp/releases/download/release-20191202T142318/clojure-lsp
diff --git a/installer/install-cobol-language-support.cmd b/installer/install-cobol-language-support.cmd new file mode 100644 index 0000000..39959a1 --- /dev/null +++ b/installer/install-cobol-language-support.cmd @@ -0,0 +1,23 @@ +@echo off
+
+setlocal
+
+cd /d %~dp0
+
+set installer_dir=%cd%
+set server_dir=..\servers\cobol-language-support
+if exist %server_dir% rd /Q /S "%server_dir%"
+md "%server_dir%"
+cd /d "%server_dir%"
+
+set version=0.9.1
+set url=https://github.com/eclipse/che-che4z-lsp-for-cobol/releases/download/%version%/cobol-language-support-%version%.vsix
+curl -LO "%url%"
+call %installer_dir%\run_unzip "cobol-language-support-%version%.vsix"
+
+echo @echo off ^
+
+java "-Dline.speparator=\r\n" -jar "%%~dp0\extension\server\lsp-service-cobol-%version%.jar" pipeEnabled ^
+
+> cobol-language-support.cmd
+
diff --git a/installer/install-cobol-language-support.sh b/installer/install-cobol-language-support.sh new file mode 100755 index 0000000..f87e1c3 --- /dev/null +++ b/installer/install-cobol-language-support.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +set -e + +cd $(dirname $0) + +server_dir="../servers/cobol-language-support" +[ -d "$server_dir" ] && rm -rf "$server_dir" +mkdir "$server_dir" && cd "$server_dir" + +version="0.9.1" +url="https://github.com/eclipse/che-che4z-lsp-for-cobol/releases/download/$version/cobol-language-support-$version.vsix" +curl -LO "$url" +unzip "cobol-language-support-$version.vsix" + +cat <<EOF >./cobol-language-support +#!/bin/sh +DIR=\$(cd \$(dirname \$0); pwd) +java "-Dline.speparator=\r\n" -jar "\$DIR/extension/server/lsp-service-cobol-$version.jar" pipeEnabled +EOF + +chmod +x ./cobol-language-support diff --git a/installer/install-css-languageserver.cmd b/installer/install-css-languageserver.cmd index 79de653..529bb74 100644 --- a/installer/install-css-languageserver.cmd +++ b/installer/install-css-languageserver.cmd @@ -1,5 +1,5 @@ -@echo off - -cd %~dp0 - -call npm_install css-languageserver vscode-css-languageserver-bin +@echo off
+
+cd /d %~dp0
+
+call npm_install css-languageserver vscode-css-languageserver-bin
diff --git a/installer/install-docker-langserver.cmd b/installer/install-docker-langserver.cmd index fd16f67..d4112c3 100644 --- a/installer/install-docker-langserver.cmd +++ b/installer/install-docker-langserver.cmd @@ -1,6 +1,6 @@ -@echo off - -cd %~dp0 - -call npm_install docker-langserver dockerfile-language-server-nodejs - +@echo off
+
+cd /d %~dp0
+
+call npm_install docker-langserver dockerfile-language-server-nodejs
+
diff --git a/installer/install-eclipse-jdt-ls.cmd b/installer/install-eclipse-jdt-ls.cmd index d4a5baa..7a8c1db 100644 --- a/installer/install-eclipse-jdt-ls.cmd +++ b/installer/install-eclipse-jdt-ls.cmd @@ -1,9 +1,14 @@ @echo off
-cd %~dp0
-if exist "..\servers\eclipse-jdt-ls" rd /S /Q "..\servers\eclipse-jdt-ls"
-md "..\servers\eclipse-jdt-ls"
-cd "..\servers\eclipse-jdt-ls"
+setlocal
+
+cd /d %~dp0
+
+set server_dir=..\servers\eclipse-jdt-ls
+if exist %server_dir% rd /Q /S "%server_dir%"
+md "%server_dir%"
+cd /d "%server_dir%"
+
curl -o "jdt-language-server-latest.tar.gz" "http://download.eclipse.org/jdtls/snapshots/jdt-language-server-latest.tar.gz"
curl -o "lombok.jar" "https://projectlombok.org/downloads/lombok.jar"
tar xvf jdt-language-server-latest.tar.gz
diff --git a/installer/install-elm-language-server.cmd b/installer/install-elm-language-server.cmd index 9b58339..ae36144 100644 --- a/installer/install-elm-language-server.cmd +++ b/installer/install-elm-language-server.cmd @@ -1,5 +1,5 @@ -@echo off - -cd %~dp0 - -call npm_install elm-language-server "@elm-tooling/elm-language-server" +@echo off
+
+cd /d %~dp0
+
+call npm_install elm-language-server "@elm-tooling/elm-language-server"
diff --git a/installer/install-emmylua-ls.cmd b/installer/install-emmylua-ls.cmd index afbe34e..6c74ae1 100644 --- a/installer/install-emmylua-ls.cmd +++ b/installer/install-emmylua-ls.cmd @@ -1,14 +1,19 @@ -@echo off - -cd %~dp0 -if exist "..\servers\emmylua-ls" rd /S /Q "..\servers\emmylua-ls" -md "..\servers\emmylua-ls" -cd "..\servers\emmylua-ls" -curl -L -o EmmyLua-LS-all.jar "https://ci.appveyor.com/api/buildjobs/54yf9rjvj49494pd/artifacts/EmmyLua-LS%%2Fbuild%%2Flibs%%2FEmmyLua-LS-all.jar" - -echo @echo off ^ - -java -cp %%~dp0/EmmyLua-LS-all.jar com.tang.vscode.MainKt ^ - -> emmylua-ls.cmd - +@echo off
+
+setlocal
+
+cd /d %~dp0
+
+set server_dir=..\servers\emmylua-ls
+if exist %server_dir% rd /Q /S "%server_dir%"
+md "%server_dir%"
+cd /d "%server_dir%"
+
+curl -L -o EmmyLua-LS-all.jar "https://ci.appveyor.com/api/buildjobs/54yf9rjvj49494pd/artifacts/EmmyLua-LS%%2Fbuild%%2Flibs%%2FEmmyLua-LS-all.jar"
+
+echo @echo off ^
+
+java -cp %%~dp0/EmmyLua-LS-all.jar com.tang.vscode.MainKt ^
+
+> emmylua-ls.cmd
+
diff --git a/installer/install-fortls.cmd b/installer/install-fortls.cmd index 89648e6..32251aa 100644 --- a/installer/install-fortls.cmd +++ b/installer/install-fortls.cmd @@ -1,6 +1,6 @@ -@echo off - -cd %~dp0 - -call pip_install fortls fortran-language-server - +@echo off
+
+cd /d %~dp0
+
+call pip_install fortls fortran-language-server
+
diff --git a/installer/install-gopls.cmd b/installer/install-gopls.cmd index 2862abe..9c08e36 100644 --- a/installer/install-gopls.cmd +++ b/installer/install-gopls.cmd @@ -1,12 +1,15 @@ -@echo off - -setlocal - -cd %~dp0 -if exist "..\servers\gopls" rd /S /Q "..\servers\gopls" -md "..\servers\gopls" -cd "..\servers\gopls" -set GOPATH=%cd% -set GOBIN=%cd% -go get -v -u golang.org/x/tools/cmd/gopls -rd /S /Q "src" +@echo off
+
+setlocal
+
+cd /d %~dp0
+
+set server_dir=..\servers\gopls
+if exist %server_dir% rd /Q /S "%server_dir%"
+md "%server_dir%"
+cd /d "%server_dir%"
+
+set GOPATH=%cd%
+set GOBIN=%cd%
+go get -v -u golang.org/x/tools/cmd/gopls
+rd /S /Q "src"
diff --git a/installer/install-html-languageserver.cmd b/installer/install-html-languageserver.cmd index 0f17784..943ebf5 100644 --- a/installer/install-html-languageserver.cmd +++ b/installer/install-html-languageserver.cmd @@ -1,5 +1,5 @@ -@echo off - -cd %~dp0 - -call npm_install html-languageserver vscode-json-languageserver-bin +@echo off
+
+cd /d %~dp0
+
+call npm_install html-languageserver vscode-json-languageserver-bin
diff --git a/installer/install-intelephense.cmd b/installer/install-intelephense.cmd index 72e55c7..6258852 100644 --- a/installer/install-intelephense.cmd +++ b/installer/install-intelephense.cmd @@ -1,5 +1,5 @@ -@echo off - -cd %~dp0 - -call npm_install intelephense intelephense +@echo off
+
+cd /d %~dp0
+
+call npm_install intelephense intelephense
diff --git a/installer/install-javascript-typescript-langserver.cmd b/installer/install-javascript-typescript-langserver.cmd index 3ddc2da..a653ada 100644 --- a/installer/install-javascript-typescript-langserver.cmd +++ b/installer/install-javascript-typescript-langserver.cmd @@ -1,5 +1,5 @@ -@echo off - -cd %~dp0 - -call npm_install javascript-typescript-langserver javascript-typescript-langserver +@echo off
+
+cd /d %~dp0
+
+call npm_install javascript-typescript-langserver javascript-typescript-langserver
diff --git a/installer/install-json-languageserver.cmd b/installer/install-json-languageserver.cmd index 8e76105..06b7bb2 100644 --- a/installer/install-json-languageserver.cmd +++ b/installer/install-json-languageserver.cmd @@ -1,5 +1,5 @@ -@echo off - -cd %~dp0 - -call npm_install json-languageserver vscode-json-languageserver-bin +@echo off
+
+cd /d %~dp0
+
+call npm_install json-languageserver vscode-json-languageserver-bin
diff --git a/installer/install-kotlin-language-server.cmd b/installer/install-kotlin-language-server.cmd index 84d5cbf..11d141c 100644 --- a/installer/install-kotlin-language-server.cmd +++ b/installer/install-kotlin-language-server.cmd @@ -1,11 +1,17 @@ @echo off
-cd %~dp0
-if exist "..\servers\kotlin-language-server" rd /S /Q "..\servers\kotlin-language-server"
-md "..\servers\kotlin-language-server"
-cd "..\servers\kotlin-language-server"
+setlocal
+
+cd /d %~dp0
+
+set installer_dir=%cd%
+set server_dir=..\servers\kotlin-language-server
+if exist %server_dir% rd /Q /S "%server_dir%"
+md "%server_dir%"
+cd /d "%server_dir%"
+
curl -L -o server.zip "https://github.com/fwcd/kotlin-language-server/releases/download/0.5.2/server.zip"
-unzip server.zip
+call %installer_dir%\run_unzip server.zip
del server.zip
echo @echo off ^
diff --git a/installer/install-lsp4xml.cmd b/installer/install-lsp4xml.cmd index 966a3b7..e85b269 100644 --- a/installer/install-lsp4xml.cmd +++ b/installer/install-lsp4xml.cmd @@ -1,14 +1,19 @@ -@echo off - -cd %~dp0 -if exist "..\servers\lsp4xml" rd /S /Q "..\servers\lsp4xml" -md "..\servers\lsp4xml" -cd "..\servers\lsp4xml" -curl -LO "https://dl.bintray.com/lsp4xml/releases/org/lsp4xml/org.eclipse.lsp4xml/0.9.1/org.eclipse.lsp4xml-0.9.1-uber.jar" - -echo @echo off ^ - -java -jar %%~dp0\org.eclipse.lsp4xml-0.9.1-uber.jar ^ - -> lsp4xml.cmd - +@echo off
+
+setlocal
+
+cd /d %~dp0
+
+set server_dir=..\servers\lsp4xml
+if exist %server_dir% rd /Q /S "%server_dir%"
+md "%server_dir%"
+cd /d "%server_dir%"
+
+curl -LO "https://dl.bintray.com/lsp4xml/releases/org/lsp4xml/org.eclipse.lsp4xml/0.9.1/org.eclipse.lsp4xml-0.9.1-uber.jar"
+
+echo @echo off ^
+
+java -jar %%~dp0\org.eclipse.lsp4xml-0.9.1-uber.jar ^
+
+> lsp4xml.cmd
+
diff --git a/installer/install-metals.cmd b/installer/install-metals.cmd index 8d290cf..decf44c 100644 --- a/installer/install-metals.cmd +++ b/installer/install-metals.cmd @@ -1,16 +1,16 @@ -@echo off - -setlocal - -cd %~dp0 - -set server_dir="..\servers\metals" -rd /Q /S %server_dir% -md %server_dir% -cd "%server_dir%" - -curl -Lo coursier https://git.io/coursier-cli -curl -Lo coursier.bat https://git.io/coursier-bat - -set version="0.7.6" -java %JAVA_OPTS% -jar coursier bootstrap --ttl Inf "org.scalameta:metals_2.12:%version%" -r "bintray:scalacenter/releases" -r "sonatype:public" -r "sonatype:snapshots" -o metals +@echo off
+
+setlocal
+
+cd /d %~dp0
+
+set server_dir=..\servers\metals
+if exist %server_dir% rd /Q /S "%server_dir%"
+md "%server_dir%"
+cd /d "%server_dir%"
+
+curl -Lo coursier https://git.io/coursier-cli
+curl -Lo coursier.bat https://git.io/coursier-bat
+
+set version="0.7.6"
+java %JAVA_OPTS% -jar coursier bootstrap --ttl Inf "org.scalameta:metals_2.12:%version%" -r "bintray:scalacenter/releases" -r "sonatype:public" -r "sonatype:snapshots" -o metals
diff --git a/installer/install-omnisharp-lsp.cmd b/installer/install-omnisharp-lsp.cmd index 253936a..dd4efac 100644 --- a/installer/install-omnisharp-lsp.cmd +++ b/installer/install-omnisharp-lsp.cmd @@ -1,15 +1,22 @@ -@echo off - -cd %~dp0 -if exist "..\servers\omnisharp-lsp" rd /S /Q "..\servers\omnisharp-lsp" -md "..\servers\omnisharp-lsp" -cd "..\servers\omnisharp-lsp" -curl -L -o omnisharp-win-x64.zip "https://github.com/OmniSharp/omnisharp-roslyn/releases/download/v1.34.9/omnisharp-win-x64.zip" -unzip omnisharp-win-x64.zip -del omnisharp-win-x64.zip - -echo @echo off ^ - -%%~dp0\omnisharp.exe %%* ^ - -> omnisharp-lsp.cmd +@echo off
+
+setlocal
+
+cd /d %~dp0
+
+set installer_dir=%cd%
+set server_dir=..\servers\omnisharp-lsp
+if exist %server_dir% rd /Q /S "%server_dir%"
+md "%server_dir%"
+cd /d "%server_dir%"
+
+curl -L -o omnisharp-win-x64.zip "https://github.com/OmniSharp/omnisharp-roslyn/releases/download/v1.34.9/omnisharp-win-x64.zip"
+call %installer_dir%\run_unzip omnisharp-win-x64.zip
+del omnisharp-win-x64.zip
+
+echo @echo off ^
+
+%%~dp0\omnisharp.exe %%* ^
+
+> omnisharp-lsp.cmd
+
diff --git a/installer/install-pyls.cmd b/installer/install-pyls.cmd index 7b62104..bbdfefd 100644 --- a/installer/install-pyls.cmd +++ b/installer/install-pyls.cmd @@ -1,5 +1,5 @@ -@echo off - -cd %~dp0 - -call pip_install pyls python-language-server +@echo off
+
+cd /d %~dp0
+
+call pip_install pyls python-language-server
diff --git a/installer/install-reason-language-server.cmd b/installer/install-reason-language-server.cmd new file mode 100644 index 0000000..1aa9aa8 --- /dev/null +++ b/installer/install-reason-language-server.cmd @@ -0,0 +1,18 @@ +@echo off + +setlocal + +cd /d %~dp0 + +set installer_dir=%cd% +set server_dir=..\servers\reason-language-server +if exist %server_dir% rd /Q /S "%server_dir%" +md "%server_dir%" +cd /d "%server_dir%" + +curl -L -o rls-windows.zip "https://github.com/jaredly/reason-language-server/releases/download/1.7.4/rls-windows.zip" +call %installer_dir%\run_unzip rls-windows.zip +del rls-windows.zip + +move rls-windows\reason-language-server.exe reason-language-server.exe +rmdir rls-windows diff --git a/installer/install-reason-language-server.sh b/installer/install-reason-language-server.sh new file mode 100755 index 0000000..78df09c --- /dev/null +++ b/installer/install-reason-language-server.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +set -e + +cd $(dirname $0) + +server_dir="../servers/reason-language-server" +[ -d $server_dir ] && rm -rf $server_dir +mkdir $server_dir && cd $server_dir + +os=$(uname -s | tr "[:upper:]" "[:lower:]") + +case $os in +linux) ;; +darwin) + os="macos" + ;; +*) + printf "%s doesn't supported by bash installer" "$os" + exit 1 + ;; +esac + +version="1.7.4" +url="https://github.com/jaredly/reason-language-server/releases/download/$version/rls-$os.zip" +curl -LO "$url" +unzip "rls-$os.zip" + +ln -s "./rls-$os/reason-language-server" . diff --git a/installer/install-rls.cmd b/installer/install-rls.cmd deleted file mode 100644 index eb7900a..0000000 --- a/installer/install-rls.cmd +++ /dev/null @@ -1,15 +0,0 @@ -@echo off - -setlocal - -cd %~dp0 -if exist "..\servers\rls" rd /S /Q "..\servers\rls" -md "..\servers\rls" -cd "..\servers\rls" -set CARGO_HOME=%cd% -cargo install rls -copy bin\rls.exe . -rd /S /Q "bin" -rd /S /Q "registry" -del .package-cache -del .crates.toml diff --git a/installer/install-rls.sh b/installer/install-rls.sh deleted file mode 100755 index ab310ff..0000000 --- a/installer/install-rls.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -set -e - -cd $(dirname $0) -[ -d ../servers/rls ] && rm -rf ../servers/rls -mkdir ../servers/rls -cd ../servers/rls -CARGO_HOME=$(pwd) cargo install rls -cp bin/rls . -rm -rf bin registry .package-cache .crates.toml diff --git a/installer/install-solargraph.cmd b/installer/install-solargraph.cmd index 9f7c973..fe7f6d8 100644 --- a/installer/install-solargraph.cmd +++ b/installer/install-solargraph.cmd @@ -1,16 +1,21 @@ -@echo off - -cd %~dp0 -if exist "..\servers\solargraph" rd /S /Q "..\servers\solargraph" -md "..\servers\solargraph" -cd "..\servers\solargraph" -git clone "https://github.com/castwide/solargraph" . - -call bundle install --path vendor/bundle - -echo @echo off ^ - -bundle exec ruby %%~dp0\bin/solargraph stdio ^ - -> solargraph.cmd - +@echo off
+
+setlocal
+
+cd /d %~dp0
+
+set server_dir=..\servers\solargraph
+if exist %server_dir% rd /Q /S "%server_dir%"
+md "%server_dir%"
+cd /d "%server_dir%"
+
+git clone "https://github.com/castwide/solargraph" .
+
+call bundle install --path vendor/bundle
+
+echo @echo off ^
+
+bundle exec ruby %%~dp0\bin/solargraph stdio ^
+
+> solargraph.cmd
+
diff --git a/installer/install-terraform-lsp.cmd b/installer/install-terraform-lsp.cmd index 4903513..3c94999 100644 --- a/installer/install-terraform-lsp.cmd +++ b/installer/install-terraform-lsp.cmd @@ -1,7 +1,12 @@ -@echo off - -cd %~dp0 -if exist "..\servers\terraform-lsp" rd /S /Q "..\servers\terraform-lsp" -md "..\servers\terraform-lsp" -cd "..\servers\terraform-lsp" -curl -L "https://github.com/juliosueiras/terraform-lsp/releases/download/v0.0.9/terraform-lsp_0.0.9_windows_amd64.tar.gz" | tar xz +@echo off
+
+setlocal
+
+cd /d %~dp0
+
+set server_dir=..\servers\terraform-lsp
+if exist %server_dir% rd /Q /S "%server_dir%"
+md "%server_dir%"
+cd /d "%server_dir%"
+
+curl -L "https://github.com/juliosueiras/terraform-lsp/releases/download/v0.0.9/terraform-lsp_0.0.9_windows_amd64.tar.gz" | tar xz
diff --git a/installer/install-typescript-language-server.cmd b/installer/install-typescript-language-server.cmd index fea8393..1f8dc85 100644 --- a/installer/install-typescript-language-server.cmd +++ b/installer/install-typescript-language-server.cmd @@ -1,5 +1,6 @@ -@echo off - -cd %~dp0 - -call npm_install typescript-language-server typescript-language-server +@echo off
+
+cd /d %~dp0
+
+call npm_install tsserver typescript
+call npm_install typescript-language-server typescript-language-server
diff --git a/installer/install-typescript-language-server.sh b/installer/install-typescript-language-server.sh index 7669018..a34ea58 100755 --- a/installer/install-typescript-language-server.sh +++ b/installer/install-typescript-language-server.sh @@ -5,4 +5,5 @@ set -e cd $(dirname $0) . ./npm.sh +npm_install tsserver typescript npm_install typescript-language-server typescript-language-server diff --git a/installer/install-vim-language-server.cmd b/installer/install-vim-language-server.cmd index 14ad1bc..c2a1d55 100644 --- a/installer/install-vim-language-server.cmd +++ b/installer/install-vim-language-server.cmd @@ -1,5 +1,5 @@ -@echo off - -cd %~dp0 - -call npm_install vim-language-server vim-language-server +@echo off
+
+cd /d %~dp0
+
+call npm_install vim-language-server vim-language-server
diff --git a/installer/install-yaml-language-server.cmd b/installer/install-yaml-language-server.cmd index 6d404c6..043e388 100644 --- a/installer/install-yaml-language-server.cmd +++ b/installer/install-yaml-language-server.cmd @@ -1,5 +1,5 @@ -@echo off - -cd %~dp0 - -call npm_install yaml-language-server yaml-language-server +@echo off
+
+cd /d %~dp0
+
+call npm_install yaml-language-server yaml-language-server
diff --git a/installer/npm.sh b/installer/npm.sh index c1ec529..19e4e11 100644 --- a/installer/npm.sh +++ b/installer/npm.sh @@ -8,7 +8,7 @@ set -e npm_install() { server_dir="../servers/$1" [ -d "$server_dir" ] && rm -rf "$server_dir" - mkdir "$server_dir" && cd "$server_dir" + mkdir "$server_dir" && pushd . > /dev/null && cd "$server_dir" npm init -y @@ -20,4 +20,6 @@ EOF npm install "$2" ln -s "./node_modules/.bin/$1" . + + popd > /dev/null } diff --git a/installer/npm_install.cmd b/installer/npm_install.cmd index d17c974..caea4a8 100644 --- a/installer/npm_install.cmd +++ b/installer/npm_install.cmd @@ -1,21 +1,23 @@ -@echo off - -if "x%1" equ "x" goto :EOF -if "x%2" equ "x" goto :EOF - -set server_dir="..\servers\%1" -rd /Q /S "%server_dir%" 2>NUL -md "%server_dir%" -cd "%server_dir%" - -call npm init -y - -echo {"name":""}>package.json - -call npm install "%2" - -echo @echo off ^ - -call %%~dp0\node_modules\.bin\%1.cmd %%* ^ - -> %1.cmd +@echo off
+
+if "x%1" equ "x" goto :EOF
+if "x%2" equ "x" goto :EOF
+
+set server_dir=..\servers\%1
+if exist "%server_dir%" rd /Q /S "%server_dir%"
+md "%server_dir%"
+pushd .
+cd /d "%server_dir%"
+
+call npm init -y
+
+echo {"name":""}>package.json
+
+call npm install "%2"
+
+echo @echo off ^
+
+call %%~dp0\node_modules\.bin\%1.cmd %%* ^
+
+> %1.cmd
+popd
diff --git a/installer/run_unzip.cmd b/installer/run_unzip.cmd new file mode 100644 index 0000000..1815a90 --- /dev/null +++ b/installer/run_unzip.cmd @@ -0,0 +1,9 @@ +@echo off + +if "x%1" equ "x" goto :EOF + +where unzip 2>NUL +if %ERRORLEVEL% neq 0 ( + curl -L -o %~dp0\unzip.exe https://github.com/mattn/vim-lsp-settings/releases/download/v0.0.1/unzip.exe +) +%~dp0\unzip "%1" diff --git a/plugin/lsp_settings.vim b/plugin/lsp_settings.vim index 9c1985d..412b6f3 100644 --- a/plugin/lsp_settings.vim +++ b/plugin/lsp_settings.vim @@ -130,49 +130,61 @@ function! s:vimlsp_settings_get(name, key, default) abort endfunction function! s:vimlsp_setting() abort + for l:ft in keys(s:settings) + if has_key(g:, 'lsp_settings_whitelist') && index(g:lsp_settings_whitelist, l:ft) == -1 || empty(s:settings[l:ft]) + continue + endif + exe 'augroup' s:load_or_suggest_group_name(l:ft) + au! + exe 'autocmd FileType' l:ft 'call s:vimlsp_load_or_suggest(' string(l:ft) ')' + augroup END + endfor +endfunction + +function! s:vimlsp_load_or_suggest(ft) abort + let l:group_name = s:load_or_suggest_group_name(a:ft) + exe 'augroup' l:group_name + au! + augroup END + exe 'augroup!' l:group_name + if has('patch-8.1.1113') command! -nargs=1 LspRegisterServer autocmd User lsp_setup ++once call lsp#register_server(<args>) else command! -nargs=1 LspRegisterServer autocmd User lsp_setup call lsp#register_server(<args>) endif - for l:ft in keys(s:settings) - if has_key(g:, 'lsp_settings_whitelist') && index(g:lsp_settings_whitelist, l:ft) == -1 - continue - endif - let l:found = 0 - if empty(s:settings[l:ft]) - continue + let l:found = 0 + + for l:server in s:settings[a:ft] + let l:command = s:vimlsp_settings_get(l:server.command, 'cmd', l:server.command) + if type(l:command) == type([]) + let l:command = l:command[0] endif - for l:server in s:settings[l:ft] - let l:command = s:vimlsp_settings_get(l:server.command, 'cmd', l:server.command) - if type(l:command) == type([]) - let l:command = l:command[0] - endif - if s:executable(l:command) - let l:script = printf('%s/%s.vim', s:settings_dir, l:server.command) - if filereadable(l:script) - exe 'source' l:script - let l:found += 1 - break - endif + if s:executable(l:command) + let l:script = printf('%s/%s.vim', s:settings_dir, l:server.command) + if filereadable(l:script) + exe 'source' l:script + let l:found += 1 + break endif - endfor - if l:found ==# 0 - exe printf('augroup vimlsp_suggest_%s', l:ft) - au! - if has('patch-8.1.1113') - exe printf('autocmd FileType %s ++once call s:vimlsp_settings_suggest()', l:ft) - else - exe printf('autocmd FileType %s call s:vimlsp_settings_suggest()', l:ft) - endif - augroup END - elseif !empty(s:vimlsp_installer()) - command! -buffer LspInstallServer call s:vimlsp_install_server() endif endfor + if l:found ==# 0 + call s:vimlsp_settings_suggest() + else + doautocmd User lsp_setup + if !exists(':LspInstallServer') + command! -buffer LspInstallServer call s:vimlsp_install_server() + endif + endif + delcommand LspRegisterServer endfunction +function! s:load_or_suggest_group_name(ft) abort + return printf('vimlsp_suggest_%s', a:ft) +endfunction + call s:vimlsp_setting() diff --git a/settings.json b/settings.json index 27d76d6..bf6c978 100644 --- a/settings.json +++ b/settings.json @@ -5,91 +5,109 @@ "requires": [] } ], - "cpp": [ + "clojure": [ { - "command": "clangd", + "command": "clojure-lsp", "requires": [] } ], - "clojure": [ + "cobol": [ { - "command": "clojure-lsp", + "command": "cobol-language-support", + "requires": [ + "java" + ] + } + ], + "cpp": [ + { + "command": "clangd", "requires": [] } ], - "typescript": [ + "cs": [ { - "command": "typescript-language-server", + "command": "omnisharp-lsp", "requires": [ "npm" ] } ], - "javascript": [ + "css": [ { - "command": "javascript-typescript-langserver", + "command": "css-languageserver", "requires": [ "npm" ] - }, + } + ], + "dockerfile": [ { - "command": "typescript-language-server", + "command": "docker-langserver", "requires": [ "npm" ] } ], - "python": [ + "elm": [ { - "command": "pyls", + "command": "elm-language-server", "requires": [ - "py" + "npm" ] - }, + } + ], + "fortran": [ { - "command": "pyls", + "command": "fortls", "requires": [ "python3" ] } ], - "rust": [ + "go": [ { - "command": "rls", + "command": "gopls", "requires": [ - "rustup" + "go" ] } ], - "go": [ + "html": [ { - "command": "gopls", + "command": "html-languageserver", "requires": [ - "go" + "npm" ] } ], - "ruby": [ + "java": [ { - "command": "solargraph", + "command": "eclipse-jdt-ls", "requires": [ - "gem" + "java" ] } ], - "php": [ + "javascript": [ { - "command": "intelephense", + "command": "javascript-typescript-langserver", + "requires": [ + "npm" + ] + }, + { + "command": "typescript-language-server", "requires": [ "npm" ] } ], - "java": [ + "json": [ { - "command": "eclipse-jdt-ls", + "command": "json-languageserver", "requires": [ - "java" + "npm" ] } ], @@ -101,6 +119,14 @@ ] } ], + "less": [ + { + "command": "css-languageserver", + "requires": [ + "npm" + ] + } + ], "lua": [ { "command": "emmylua-ls", @@ -109,103 +135,113 @@ ] } ], - "vim": [ + "php": [ { - "command": "vim-language-server", + "command": "intelephense", "requires": [ "npm" ] } ], - "html": [ + "python": [ { - "command": "html-languageserver", + "command": "pyls", "requires": [ - "npm" + "py" ] - } - ], - "css": [ + }, { - "command": "css-languageserver", + "command": "pyls", "requires": [ - "npm" + "python3" ] } ], - "cs": [ + "reason": [ { - "command": "omnisharp-lsp", + "command": "reason-language-server", + "requires": [] + } + ], + "ruby": [ + { + "command": "solargraph", "requires": [ - "npm" + "gem" ] } ], - "terraform": [ + "rust": [ { - "command": "terraform-lsp", + "command": "rls", "requires": [] } ], - "dockerfile": [ + "sass": [ { - "command": "docker-langserver", + "command": "css-languageserver", "requires": [ "npm" ] } ], - "sh": [ + "scala": [ { - "command": "bash-language-server", + "command": "metals", "requires": [ - "npm" + "java" ] } ], - "yaml": [ + "sh": [ { - "command": "yaml-language-server", + "command": "bash-language-server", "requires": [ "npm" ] } ], - "xml": [ + "swift": [ { - "command": "lsp4xml", + "command": "sourcekit-lsp", "requires": [ - "java" + "sourcekit-lsp" ] } ], - "fortran": [ + "terraform": [ { - "command": "fortls", + "command": "terraform-lsp", + "requires": [] + } + ], + "typescript": [ + { + "command": "typescript-language-server", "requires": [ - "python3" + "npm" ] } ], - "scala": [ + "vim": [ { - "command": "metals", + "command": "vim-language-server", "requires": [ - "java" + "npm" ] } ], - "elm": [ + "xml": [ { - "command": "elm-language-server", + "command": "lsp4xml", "requires": [ - "npm" + "java" ] } ], - "json": [ + "yaml": [ { - "command": "json-languageserver", + "command": "yaml-language-server", "requires": [ "npm" ] diff --git a/settings/bash-language-server.vim b/settings/bash-language-server.vim index a7e28da..b1a7f9a 100644 --- a/settings/bash-language-server.vim +++ b/settings/bash-language-server.vim @@ -3,7 +3,8 @@ augroup vimlsp_settings_bash_language_server LspRegisterServer { \ 'name': 'bash-language-server', \ 'cmd': {server_info->lsp_settings#get('bash-language-server', 'cmd', [lsp_settings#exec_path('bash-language-server'), 'start'])}, - \ 'root_uri':{server_info->lsp_settings#get('bash-language-server', 'root_uri', lsp#utils#path_to_uri(lsp#utils#find_nearest_parent_file_directory(lsp#utils#get_buffer_path(), ['.git/'])))}, + \ 'root_uri':{server_info->lsp_settings#get('bash-language-server', 'root_uri', lsp_settings#root_uri(['.git/']))}, + \ 'initialization_options': lsp_settings#get('bash-language-server', 'initialization_options', v:null), \ 'whitelist': lsp_settings#get('bash-language-server', 'whitelist', ['sh']), \ 'blacklist': lsp_settings#get('bash-language-server', 'blacklist', []), \ 'config': lsp_settings#get('bash-language-server', 'config', {}), diff --git a/settings/clangd.vim b/settings/clangd.vim index 26632a9..a593dfb 100644 --- a/settings/clangd.vim +++ b/settings/clangd.vim @@ -3,7 +3,7 @@ augroup vimlsp_settings_clangd LspRegisterServer { \ 'name': 'clangd', \ 'cmd': {server_info->lsp_settings#get('clangd', 'cmd', [lsp_settings#exec_path('clangd')])}, - \ 'root_uri':{server_info->lsp#utils#path_to_uri(lsp#utils#find_nearest_parent_file_directory(lsp#utils#get_buffer_path(), ['.git/']))}, + \ 'root_uri':{server_info->lsp_settings#get('clangd', 'root_uri', lsp_settings#root_uri(['.git/']))}, \ 'initialization_options': lsp_settings#get('clangd', 'initialization_options', v:null), \ 'whitelist': lsp_settings#get('clangd', 'whitelist', ['c', 'cpp', 'objc', 'objcpp']), \ 'blacklist': lsp_settings#get('clangd', 'blacklist', []), diff --git a/settings/clojure-lsp.vim b/settings/clojure-lsp.vim index 8f727fe..f50e637 100644 --- a/settings/clojure-lsp.vim +++ b/settings/clojure-lsp.vim @@ -3,7 +3,7 @@ augroup vimlsp_settings_clojure_lsp LspRegisterServer { \ 'name': 'clojure-lsp', \ 'cmd': {server_info->lsp_settings#get('clojure-lsp', 'cmd', [lsp_settings#exec_path('clojure-lsp')])}, - \ 'root_uri':{server_info->lsp#utils#path_to_uri(lsp#utils#find_nearest_parent_file_directory(lsp#utils#get_buffer_path(), ['.git/']))}, + \ 'root_uri':{server_info->lsp_settings#get('clojure-lsp', 'root_uri', lsp_settings#root_uri(['.git/']))}, \ 'initialization_options': lsp_settings#get('clojure-lsp', 'initialization_options', v:null), \ 'whitelist': lsp_settings#get('clojure-lsp', 'whitelist', ['clojure']), \ 'blacklist': lsp_settings#get('clojure-lsp', 'blacklist', []), diff --git a/settings/cobol-language-support.vim b/settings/cobol-language-support.vim new file mode 100644 index 0000000..57df026 --- /dev/null +++ b/settings/cobol-language-support.vim @@ -0,0 +1,13 @@ +augroup vimlsp_settings_cobol_language_support + au! + LspRegisterServer { + \ 'name': 'cobol-language-support', + \ 'cmd': {server_info->lsp_settings#get('cobol-language-support', 'cmd', [lsp_settings#exec_path('cobol-language-support')])}, + \ 'root_uri':{server_info->lsp_settings#get('cobol-language-server', 'root_uri', lsp_settings#root_uri(['.git/']))}, + \ 'initialization_options': lsp_settings#get('cobol-language-support', 'initialization_options', {}), + \ 'whitelist': lsp_settings#get('cobol-language-support', 'whitelist', ['cobol']), + \ 'blacklist': lsp_settings#get('cobol-language-support', 'blacklist', []), + \ 'config': lsp_settings#get('cobol-language-support', 'config', {}), + \ 'workspace_config': lsp_settings#get('cobol-language-support', 'workspace_config', {}), + \ } +augroup END diff --git a/settings/css-languageserver.vim b/settings/css-languageserver.vim index 215e7e9..9fdfb5f 100644 --- a/settings/css-languageserver.vim +++ b/settings/css-languageserver.vim @@ -3,11 +3,14 @@ augroup vimlsp_settings_css_languageserver LspRegisterServer { \ 'name': 'css-languageserver', \ 'cmd': {server_info->lsp_settings#get('css-languageserver', 'cmd', [lsp_settings#exec_path('css-languageserver'), '--stdio'])}, - \ 'root_uri':{server_info->lsp#utils#path_to_uri(lsp#utils#find_nearest_parent_file_directory(lsp#utils#get_buffer_path(), ['.git/']))}, + \ 'root_uri':{server_info->lsp_settings#get('css-languageserver', 'root_uri', lsp_settings#root_uri(['.git/']))}, \ 'initialization_options': lsp_settings#get('css-languageserver', 'initialization_options', v:null), - \ 'whitelist': lsp_settings#get('css-languageserver', 'whitelist', ['css']), + \ 'whitelist': lsp_settings#get('css-languageserver', 'whitelist', ['css', 'less', 'sass']), \ 'blacklist': lsp_settings#get('css-languageserver', 'blacklist', []), \ 'config': lsp_settings#get('css-languageserver', 'config', {}), - \ 'workspace_config': lsp_settings#get('css-languageserver', 'workspace_config', {'css': {'lint': {'validProperties': []}}}), - \ } + \ 'workspace_config': lsp_settings#get('css-languageserver', 'workspace_config', { + \ 'css': {'lint': {'validProperties': []}}, + \ 'less': {'lint': {'validProperties': []}}, + \ 'sass': {'lint': {'validProperties': []}}, + \ })} augroup END diff --git a/settings/docker-langserver.vim b/settings/docker-langserver.vim index 7fbf78c..c8e4443 100644 --- a/settings/docker-langserver.vim +++ b/settings/docker-langserver.vim @@ -3,7 +3,8 @@ augroup vimlsp_settings_dockerfile_language_server_nodejs LspRegisterServer { \ 'name': 'docker-langserver', \ 'cmd': {server_info->lsp_settings#get('docker-langserver', 'cmd', [lsp_settings#exec_path('docker-langserver'), '--stdio'])}, - \ 'root_uri':{server_info->lsp#utils#path_to_uri(lsp#utils#find_nearest_parent_file_directory(lsp#utils#get_buffer_path(), ['.git/']))}, + \ 'root_uri':{server_info->lsp_settings#get('docker-langserver', 'root_uri', lsp_settings#root_uri(['.git/']))}, + \ 'initialization_options': lsp_settings#get('docker-langserver', 'initialization_options', v:null), \ 'whitelist': lsp_settings#get('docker-langserver', 'whitelist', ['dockerfile']), \ 'blacklist': lsp_settings#get('docker-langserver', 'blacklist', []), \ 'config': lsp_settings#get('docker-langserver', 'config', {}), diff --git a/settings/eclipse-jdt-ls.vim b/settings/eclipse-jdt-ls.vim index 32f9113..5e72f81 100644 --- a/settings/eclipse-jdt-ls.vim +++ b/settings/eclipse-jdt-ls.vim @@ -3,7 +3,7 @@ augroup vimlsp_settings_eclipse_jdt_ls LspRegisterServer { \ 'name': 'eclipse-jdt-ls', \ 'cmd': {server_info->lsp_settings#get('eclipse-jdt-ls', 'cmd', [lsp_settings#exec_path('eclipse-jdt-ls')])}, - \ 'root_uri':{server_info->lsp#utils#path_to_uri(lsp#utils#find_nearest_parent_file_directory(lsp#utils#get_buffer_path(), ['.git/']))}, + \ 'root_uri':{server_info->lsp_settings#get('eclipse-jdt-ls', 'root_uri', lsp_settings#root_uri(['.git/', 'pom.xml', 'build.gradle']))}, \ 'initialization_options': lsp_settings#get('eclipse-jdt-ls', 'initialization_options', v:null), \ 'whitelist': lsp_settings#get('eclipse-jdt-ls', 'whitelist', ['java']), \ 'blacklist': lsp_settings#get('eclipse-jdt-ls', 'blacklist', []), diff --git a/settings/elm-language-server.vim b/settings/elm-language-server.vim index 6dcedb6..63b25d3 100644 --- a/settings/elm-language-server.vim +++ b/settings/elm-language-server.vim @@ -3,7 +3,7 @@ augroup vimlsp_settings_elm_language_server LspRegisterServer { \ 'name': 'elm-language-server', \ 'cmd': {server_info->lsp_settings#get('elm-language-server', 'cmd', [lsp_settings#exec_path('elm-language-server')])}, - \ 'root_uri':{server_info->lsp_settings#get('elm-language-server', 'root_uri', lsp#utils#path_to_uri(lsp#utils#find_nearest_parent_file_directory(lsp#utils#get_buffer_path(), ['.git/', 'elm.json'])))}, + \ 'root_uri':{server_info->lsp_settings#get('elm-language-server', 'root_uri', lsp_settings#root_uri(['.git/', 'elm.json']))}, \ 'initialization_options': lsp_settings#get('elm-language-server', 'initialization_options', {'elmPath': 'elm', 'runtime': 'node', 'elmFormatPath': 'elm-format', 'elmTestPath': 'elm-test'}), \ 'whitelist': lsp_settings#get('elm-language-server', 'whitelist', ['elm', 'elm.tsx']), \ 'blacklist': lsp_settings#get('elm-language-server', 'blacklist', []), diff --git a/settings/emmylua-ls.vim b/settings/emmylua-ls.vim index 92c435c..40af50d 100644 --- a/settings/emmylua-ls.vim +++ b/settings/emmylua-ls.vim @@ -3,7 +3,7 @@ augroup vimlsp_settings_emmylua_ls LspRegisterServer { \ 'name': 'emmylua-ls', \ 'cmd': {server_info->lsp_settings#get('emmylua-ls', 'cmd', [lsp_settings#exec_path('emmylua-ls')])}, - \ 'root_uri':{server_info->lsp#utils#path_to_uri(lsp#utils#find_nearest_parent_file_directory(lsp#utils#get_buffer_path(), ['.git/']))}, + \ 'root_uri':{server_info->lsp_settings#get('emmylua-ls', 'root_uri', lsp_settings#root_uri(['.git/']))}, \ 'initialization_options': lsp_settings#get('emmylua-ls', 'initialization_options', v:null), \ 'whitelist': lsp_settings#get('emmylua-ls', 'whitelist', ['lua']), \ 'blacklist': lsp_settings#get('emmylua-ls', 'blacklist', []), diff --git a/settings/fortls.vim b/settings/fortls.vim index 3aced00..49a8aff 100644 --- a/settings/fortls.vim +++ b/settings/fortls.vim @@ -3,6 +3,7 @@ augroup vimlsp_settings_fortls LspRegisterServer { \ 'name': 'fortls', \ 'cmd': {server_info->lsp_settings#get('fortls', 'cmd', [lsp_settings#exec_path('fortls')])}, + \ 'root_uri':{server_info->lsp_settings#get('fortls', 'root_uri', lsp_settings#root_uri(['.git/']))}, \ 'initialization_options': lsp_settings#get('fortls', 'initialization_options', v:null), \ 'whitelist': lsp_settings#get('fortls', 'whitelist', ['fortran']), \ 'blacklist': lsp_settings#get('fortls', 'blacklist', []), diff --git a/settings/gopls.vim b/settings/gopls.vim index 86965cc..3a0b93b 100644 --- a/settings/gopls.vim +++ b/settings/gopls.vim @@ -3,7 +3,7 @@ augroup vimlsp_settings_gopls LspRegisterServer { \ 'name': 'gopls', \ 'cmd': {server_info->lsp_settings#get('gopls', 'cmd', [lsp_settings#exec_path('gopls')])}, - \ 'root_uri':{server_info->lsp_settings#get('gopls', 'root_uri', lsp#utils#path_to_uri(lsp#utils#find_nearest_parent_file_directory(lsp#utils#get_buffer_path(), ['.git/', 'go.mod'])))}, + \ 'root_uri':{server_info->lsp_settings#get('gopls', 'root_uri', lsp_settings#root_uri(['.git/', 'go.mod']))}, \ 'initialization_options': lsp_settings#get('gopls', 'initialization_options', {"diagnostics": "true"}), \ 'whitelist': lsp_settings#get('gopls', 'whitelist', ['go']), \ 'blacklist': lsp_settings#get('gopls', 'blacklist', []), diff --git a/settings/html-languageserver.vim b/settings/html-languageserver.vim index 0273ac6..fe741fb 100644 --- a/settings/html-languageserver.vim +++ b/settings/html-languageserver.vim @@ -3,7 +3,7 @@ augroup vimlsp_settings_html_languageserver LspRegisterServer { \ 'name': 'html-languageserver', \ 'cmd': {server_info->lsp_settings#get('html-languageserver', 'cmd', [lsp_settings#exec_path('html-languageserver'), '--stdio'])}, - \ 'root_uri':{server_info->lsp_settings#get('html-langserver', 'root_uri', lsp#utils#path_to_uri(lsp#utils#find_nearest_parent_file_directory(lsp#utils#get_buffer_path(), ['.git/'])))}, + \ 'root_uri':{server_info->lsp_settings#get('html-langserver', 'root_uri', lsp_settings#root_uri(['.git/']))}, \ 'initialization_options': lsp_settings#get('html-languageserver', 'initialization_options', {'embeddedLanguages': {'css': v:true, 'html': v:true}}), \ 'whitelist': lsp_settings#get('html-languageserver', 'whitelist', ['html']), \ 'blacklist': lsp_settings#get('html-languageserver', 'blacklist', []), diff --git a/settings/intelephense.vim b/settings/intelephense.vim index 4a7c1d5..36f4f07 100644 --- a/settings/intelephense.vim +++ b/settings/intelephense.vim @@ -3,7 +3,7 @@ augroup vimlsp_settings_intelephense_server LspRegisterServer { \ 'name': 'intelephense', \ 'cmd': {server_info->lsp_settings#get('intelephense', 'cmd', [lsp_settings#exec_path('intelephense'), '--stdio'])}, - \ 'root_uri':{server_info->lsp_settings#get('intelephense', 'root_uri', lsp#utils#path_to_uri(lsp#utils#find_nearest_parent_file_directory(lsp#utils#get_buffer_path(), ['.git/'])))}, + \ 'root_uri':{server_info->lsp_settings#get('intelephense', 'root_uri', lsp_settings#root_uri(['.git/']))}, \ 'initialization_options': lsp_settings#get('intelephense', 'initialization_options', {}), \ 'whitelist': lsp_settings#get('intelephense', 'whitelist', ['php']), \ 'blacklist': lsp_settings#get('intelephense', 'blacklist', []), diff --git a/settings/javascript-typescript-langserver.vim b/settings/javascript-typescript-langserver.vim index 71126da..72afeb0 100644 --- a/settings/javascript-typescript-langserver.vim +++ b/settings/javascript-typescript-langserver.vim @@ -3,9 +3,9 @@ augroup vimlsp_settings_javascript_typescript_langserver LspRegisterServer { \ 'name': 'javascript-typescript-langserver', \ 'cmd': {server_info->lsp_settings#get('javascript-typescript-langserver', 'cmd', [lsp_settings#exec_path('javascript-typescript-langserver')])}, - \ 'root_uri':{server_info->lsp_settings#get('javascript-typescript-langserver', 'root_uri', lsp#utils#path_to_uri(lsp#utils#find_nearest_parent_file_directory(lsp#utils#get_buffer_path(), ['.git/'])))}, + \ 'root_uri':{server_info->lsp_settings#get('javascript-typescript-langserver', 'root_uri', lsp_settings#root_uri(['.git/']))}, \ 'initialization_options': lsp_settings#get('javascript-typescript-langserver', 'initialization_options', {"diagnostics": "true"}), - \ 'whitelist': lsp_settings#get('javascript-typescript-langserver', 'whitelist', ['javascript']), + \ 'whitelist': lsp_settings#get('javascript-typescript-langserver', 'whitelist', ['javascript', 'javascriptreact']), \ 'blacklist': lsp_settings#get('javascript-typescript-langserver', 'blacklist', []), \ 'config': lsp_settings#get('javascript-typescript-langserver', 'config', {}), \ 'workspace_config': lsp_settings#get('javascript-typescript-langserver', 'workspace_config', {}), diff --git a/settings/json-languageserver.vim b/settings/json-languageserver.vim index 626df64..e1f3375 100644 --- a/settings/json-languageserver.vim +++ b/settings/json-languageserver.vim @@ -3,7 +3,7 @@ augroup vimlsp_settings_json_languageserver LspRegisterServer { \ 'name': 'json-languageserver', \ 'cmd': {server_info->lsp_settings#get('json-languageserver', 'cmd', [lsp_settings#exec_path('json-languageserver'), '--stdio'])}, - \ 'root_uri':{server_info->lsp_settings#get('json-langserver', 'root_uri', lsp#utils#path_to_uri(lsp#utils#find_nearest_parent_file_directory(lsp#utils#get_buffer_path(), ['.git/'])))}, + \ 'root_uri':{server_info->lsp_settings#get('json-languageserver', 'root_uri', lsp_settings#root_uri(['.git/']))}, \ 'initialization_options': lsp_settings#get('json-languageserver', 'initialization_options', v:null), \ 'whitelist': lsp_settings#get('json-languageserver', 'whitelist', ['json']), \ 'blacklist': lsp_settings#get('json-languageserver', 'blacklist', []), diff --git a/settings/kotlin-language-server.vim b/settings/kotlin-language-server.vim index 479805b..6909653 100644 --- a/settings/kotlin-language-server.vim +++ b/settings/kotlin-language-server.vim @@ -3,7 +3,7 @@ augroup vimlsp_settings_kotlin_language_server LspRegisterServer { \ 'name': 'kotlin-language-server', \ 'cmd': {server_info->lsp_settings#get('kotlin-language-server', 'cmd', [lsp_settings#exec_path('kotlin-language-server')])}, - \ 'root_uri':{server_info->lsp_settings#get('kotlin-language-server', 'root_uri', lsp#utils#path_to_uri(lsp#utils#find_nearest_parent_file_directory(lsp#utils#get_buffer_path(), ['.git/'])))}, + \ 'root_uri':{server_info->lsp_settings#get('kotlin-language-server', 'root_uri', lsp_settings#root_uri(['.git/']))}, \ 'initialization_options': lsp_settings#get('kotlin-language-server', 'initialization_options', v:null), \ 'whitelist': lsp_settings#get('kotlin-language-server', 'whitelist', ['kotlin']), \ 'blacklist': lsp_settings#get('kotlin-language-server', 'blacklist', []), diff --git a/settings/lsp4xml.vim b/settings/lsp4xml.vim index 79beafe..a24a0d0 100644 --- a/settings/lsp4xml.vim +++ b/settings/lsp4xml.vim @@ -3,7 +3,8 @@ augroup vimlsp_settings_lsp4xml LspRegisterServer { \ 'name': 'lsp4xml', \ 'cmd': {server_info->lsp_settings#get('lsp4xml', 'cmd', [lsp_settings#exec_path('lsp4xml')])}, - \ 'root_uri':{server_info->lsp_settings#get('lsp4xml', 'root_uri', lsp#utils#path_to_uri(lsp#utils#find_nearest_parent_file_directory(lsp#utils#get_buffer_path(), ['.git/'])))}, + \ 'root_uri':{server_info->lsp_settings#get('lsp4xml', 'root_uri', lsp_settings#root_uri(['.git/']))}, + \ 'initialization_options': lsp_settings#get('lsp4xml', 'initialization_options', v:null), \ 'whitelist': lsp_settings#get('lsp4xml', 'whitelist', ['xml']), \ 'blacklist': lsp_settings#get('lsp4xml', 'blacklist', []), \ 'config': lsp_settings#get('lsp4xml', 'config', {}), diff --git a/settings/metals.vim b/settings/metals.vim index 55b6981..70f28d8 100644 --- a/settings/metals.vim +++ b/settings/metals.vim @@ -3,7 +3,8 @@ augroup vimlsp_settings_metals LspRegisterServer { \ 'name': 'metals', \ 'cmd': {server_info->lsp_settings#get('metals', 'cmd', [lsp_settings#exec_path('metals')])}, - \ 'root_uri':{server_info->lsp_settings#get('metals', 'root_uri', lsp#utils#path_to_uri(lsp#utils#find_nearest_parent_file_directory(lsp#utils#get_buffer_path(), ['.git/', 'build.sbt'])))}, + \ 'root_uri':{server_info->lsp_settings#get('metals', 'root_uri', lsp_settings#root_uri(['.git/', 'build.sbt']))}, + \ 'initialization_options': lsp_settings#get('metals', 'initialization_options', v:null), \ 'whitelist': lsp_settings#get('metals', 'whitelist', ['scala', 'sbt']), \ 'blacklist': lsp_settings#get('metals', 'blacklist', []), \ 'config': lsp_settings#get('metals', 'config', {}), diff --git a/settings/omnisharp-lsp.vim b/settings/omnisharp-lsp.vim index 1ce7fc4..cfa0a94 100644 --- a/settings/omnisharp-lsp.vim +++ b/settings/omnisharp-lsp.vim @@ -2,7 +2,8 @@ augroup vimlsp_settings_omnisharp_lsp au! LspRegisterServer { \ 'name': 'omnisharp-lsp', - \ 'root_uri':{server_info->lsp_settings#get('omnisharp-lsp', 'root_uri', lsp#utils#path_to_uri(lsp#utils#find_nearest_parent_file_directory(lsp#utils#get_buffer_path(), ['.git/'])))}, + \ 'cmd': {server_info->lsp_settings#get('omnisharp-lsp', 'cmd', [lsp_settings#exec_path('omnisharp-lsp')])}, + \ 'root_uri':{server_info->lsp_settings#get('omnisharp-lsp', 'root_uri', lsp_settings#root_uri(['.git/']))}, \ 'initialization_options': lsp_settings#get('omnisharp-lsp', 'initialization_options', v:null), \ 'whitelist': lsp_settings#get('omnisharp-lsp', 'whitelist', ['cs']), \ 'blacklist': lsp_settings#get('omnisharp-lsp', 'blacklist', []), diff --git a/settings/pyls.vim b/settings/pyls.vim index db7db34..f97a196 100644 --- a/settings/pyls.vim +++ b/settings/pyls.vim @@ -3,7 +3,7 @@ augroup vimlsp_settings_pyls LspRegisterServer { \ 'name': 'pyls', \ 'cmd': {server_info->lsp_settings#get('pyls', 'cmd', [lsp_settings#exec_path('pyls')])}, - \ 'root_uri':{server_info->lsp_settings#get('pyls', 'root_uri', lsp#utils#path_to_uri(lsp#utils#find_nearest_parent_file_directory(lsp#utils#get_buffer_path(), ['.git/'])))}, + \ 'root_uri':{server_info->lsp_settings#get('pyls', 'root_uri', lsp_settings#root_uri(['.git/']))}, \ 'initialization_options': lsp_settings#get('pyls', 'initialization_options', v:null), \ 'whitelist': lsp_settings#get('pyls', 'whitelist', ['python']), \ 'blacklist': lsp_settings#get('pyls', 'blacklist', []), diff --git a/settings/reason-language-server.vim b/settings/reason-language-server.vim new file mode 100644 index 0000000..9c4a5e1 --- /dev/null +++ b/settings/reason-language-server.vim @@ -0,0 +1,13 @@ +augroup vimlsp_settings_reason_language_server + au! + LspRegisterServer { + \ 'name': 'reason-language-server', + \ 'cmd': {server_info->lsp_settings#get('reason-language-server', 'cmd', [lsp_settings#exec_path('reason-language-server')])}, + \ 'root_uri':{server_info->lsp_settings#get('reason-language-server', 'root_uri', lsp_settings#root_uri(['.git/', 'pacakge.json']))}, + \ 'initialization_options': lsp_settings#get('reason-language-server', 'initialization_options', {}), + \ 'whitelist': lsp_settings#get('reason-language-server', 'whitelist', ['reason']), + \ 'blacklist': lsp_settings#get('reason-language-server', 'blacklist', []), + \ 'config': lsp_settings#get('reason-language-server', 'config', {}), + \ 'workspace_config': lsp_settings#get('reason-language-server', 'workspace_config', {}), + \ } +augroup END diff --git a/settings/rls.vim b/settings/rls.vim index 10f2376..45dcbfd 100644 --- a/settings/rls.vim +++ b/settings/rls.vim @@ -3,7 +3,7 @@ augroup vimlsp_settings_rls LspRegisterServer { \ 'name': 'rls', \ 'cmd': {server_info->lsp_settings#get('rls', 'cmd', [lsp_settings#exec_path('rls')])}, - \ 'root_uri':{server_info->lsp_settings#get('rls', 'root_uri', lsp#utils#path_to_uri(lsp#utils#find_nearest_parent_file_directory(lsp#utils#get_buffer_path(), ['.git/'])))}, + \ 'root_uri':{server_info->lsp_settings#get('rls', 'root_uri', lsp_settings#root_uri(['.git/']))}, \ 'initialization_options': lsp_settings#get('rls', 'initialization_options', v:null), \ 'whitelist': lsp_settings#get('rls', 'whitelist', ['rust']), \ 'blacklist': lsp_settings#get('rls', 'blacklist', []), diff --git a/settings/solargraph.vim b/settings/solargraph.vim index 796ee0a..8081a2c 100644 --- a/settings/solargraph.vim +++ b/settings/solargraph.vim @@ -3,7 +3,7 @@ augroup vimlsp_settings_solargraph LspRegisterServer { \ 'name': 'solargraph', \ 'cmd': {server_info->lsp_settings#get('solargraph', 'cmd', [lsp_settings#exec_path('solargraph'), 'stdio'])}, - \ 'root_uri':{server_info->lsp_settings#get('solargraph', 'root_uri', lsp#utils#path_to_uri(lsp#utils#find_nearest_parent_file_directory(lsp#utils#get_buffer_path(), ['.git/'])))}, + \ 'root_uri':{server_info->lsp_settings#get('solargraph', 'root_uri', lsp_settings#root_uri(['.git/']))}, \ 'initialization_options': lsp_settings#get('solargraph', 'initialization_options', {"diagnostics": "true"}), \ 'whitelist': lsp_settings#get('solargraph', 'whitelist', ['ruby']), \ 'blacklist': lsp_settings#get('solargraph', 'blacklist', []), diff --git a/settings/sourcekit-lsp.vim b/settings/sourcekit-lsp.vim new file mode 100644 index 0000000..54e1d03 --- /dev/null +++ b/settings/sourcekit-lsp.vim @@ -0,0 +1,13 @@ +augroup vimlsp_settings_sourcekit_lsp + au! + LspRegisterServer { + \ 'name': 'sourcekit-lsp', + \ 'cmd': {server_info->lsp_settings#get('sourcekit-lsp', 'cmd', [lsp_settings#exec_path('sourcekit-lsp')])}, + \ 'root_uri':{server_info->lsp_settings#get('sourcekit-lsp', 'root_uri', lsp_settings#root_uri(['.git/', 'Package.swift', '.xcodeproj', '.xcworkspace', 'Cartfile', 'Podfile']))}, + \ 'initialization_options': lsp_settings#get('sourcekit-lsp', 'initialization_options', {}), + \ 'whitelist': lsp_settings#get('sourcekit-lsp', 'whitelist', ['swift']), + \ 'blacklist': lsp_settings#get('sourcekit-lsp', 'blacklist', []), + \ 'config': lsp_settings#get('sourcekit-lsp', 'config', {}), + \ 'workspace_config': lsp_settings#get('sourcekit-lsp', 'workspace_config', {}), + \ } +augroup END diff --git a/settings/terraform-lsp.vim b/settings/terraform-lsp.vim index 1df13cb..113597f 100644 --- a/settings/terraform-lsp.vim +++ b/settings/terraform-lsp.vim @@ -3,7 +3,8 @@ augroup vimlsp_settings_terraform_lsp LspRegisterServer { \ 'name': 'terraform-lsp', \ 'cmd': {server_info->lsp_settings#get('terraform-lsp', 'cmd', [lsp_settings#exec_path('terraform-lsp')])}, - \ 'root_uri':{server_info->lsp_settings#get('terraform-lsp', 'root_uri', lsp#utils#path_to_uri(lsp#utils#find_nearest_parent_file_directory(lsp#utils#get_buffer_path(), ['.git/'])))}, + \ 'root_uri':{server_info->lsp_settings#get('terraform-lsp', 'root_uri', lsp_settings#root_uri(['.git/']))}, + \ 'initialization_options': lsp_settings#get('terraform-lsp', 'initialization_options', v:null), \ 'whitelist': lsp_settings#get('terraform-lsp', 'whitelist', ['terraform']), \ 'blacklist': lsp_settings#get('terraform-lsp', 'blacklist', []), \ 'config': lsp_settings#get('terraform-lsp', 'config', {}), diff --git a/settings/typescript-language-server.vim b/settings/typescript-language-server.vim index 400452a..8b62b67 100644 --- a/settings/typescript-language-server.vim +++ b/settings/typescript-language-server.vim @@ -2,10 +2,10 @@ augroup vimlsp_settings_typescript_language_server au! LspRegisterServer { \ 'name': 'typescript-language-server', - \ 'cmd': {server_info->lsp_settings#get('typescript-language-server', 'cmd', [lsp_settings#exec_path('typescript-language-server'), '--stdio'])}, - \ 'root_uri':{server_info->lsp_settings#get('typescript-language-server', 'root_uri', lsp#utils#path_to_uri(lsp#utils#find_nearest_parent_file_directory(lsp#utils#get_buffer_path(), ['.git/'])))}, + \ 'cmd': {server_info->lsp_settings#get('typescript-language-server', 'cmd', [lsp_settings#exec_path('typescript-language-server'), '--stdio', '--tsserver-path', lsp_settings#exec_path('tsserver')])}, + \ 'root_uri':{server_info->lsp_settings#get('typescript-language-server', 'root_uri', lsp_settings#root_uri(['.git/', 'package.json']))}, \ 'initialization_options': lsp_settings#get('typescript-language-server', 'initialization_options', {"diagnostics": "true"}), - \ 'whitelist': lsp_settings#get('typescript-language-server', 'whitelist', ['typescript', 'typescript.tsx']), + \ 'whitelist': lsp_settings#get('typescript-language-server', 'whitelist', ['typescript', 'typescriptreact']), \ 'blacklist': lsp_settings#get('typescript-language-server', 'blacklist', []), \ 'config': lsp_settings#get('typescript-language-server', 'config', {}), \ 'workspace_config': lsp_settings#get('typescript-language-server', 'workspace_config', {}), diff --git a/settings/vim-language-server.vim b/settings/vim-language-server.vim index f3497b9..d3c7c51 100644 --- a/settings/vim-language-server.vim +++ b/settings/vim-language-server.vim @@ -3,11 +3,11 @@ augroup vimlsp_settings_vim_language_server LspRegisterServer { \ 'name': 'vim-language-server', \ 'cmd': {server_info->lsp_settings#get('vim-language-server', 'cmd', [lsp_settings#exec_path('vim-language-server'), '--stdio'])}, - \ 'root_uri':{server_info->lsp_settings#get('vim-language-server', 'root_uri', lsp#utils#path_to_uri(lsp#utils#find_nearest_parent_file_directory(lsp#utils#get_buffer_path(), ['.git/', '.vim/', 'vimfiles/'])))}, + \ 'root_uri':{server_info->lsp_settings#get('vim-language-server', 'root_uri', lsp_settings#root_uri(['.git/', '.vim/', 'vimfiles/']))}, \ 'initialization_options': { 'vimruntime': $VIMRUNTIME, 'runtimepath': &rtp }, - \ 'whitelist': ['vim'], - \ 'blacklist': lsp_settings#get('bash-language-server', 'blacklist', []), - \ 'config': lsp_settings#get('bash-language-server', 'config', {}), - \ 'workspace_config': lsp_settings#get('bash-language-server', 'workspace_config', {}), + \ 'whitelist': lsp_settings#get('vim-language-server', 'whitelist', ['vim']), + \ 'blacklist': lsp_settings#get('vimbash-language-server', 'blacklist', []), + \ 'config': lsp_settings#get('vim-language-server', 'config', {}), + \ 'workspace_config': lsp_settings#get('vim-language-server', 'workspace_config', {}), \ } augroup END diff --git a/settings/yaml-language-server.vim b/settings/yaml-language-server.vim index 83e36e7..7fffc67 100644 --- a/settings/yaml-language-server.vim +++ b/settings/yaml-language-server.vim @@ -3,7 +3,8 @@ augroup vimlsp_settings_yaml_language_server LspRegisterServer { \ 'name': 'yaml-language-server', \ 'cmd': {server_info->lsp_settings#get('yaml-language-server', 'cmd', [lsp_settings#exec_path('yaml-language-server'), '--stdio'])}, - \ 'root_uri':{server_info->lsp_settings#get('yaml-language-server', 'root_uri', lsp#utils#path_to_uri(lsp#utils#find_nearest_parent_file_directory(lsp#utils#get_buffer_path(), ['.git/'])))}, + \ 'root_uri':{server_info->lsp_settings#get('yaml-language-server', 'root_uri', lsp_settings#root_uri(['.git/']))}, + \ 'initialization_options': lsp_settings#get('yaml-language-server', 'initialization_options', v:null), \ 'whitelist': lsp_settings#get('yaml-language-server', 'whitelist', ['yaml']), \ 'blacklist': lsp_settings#get('yaml-language-server', 'blacklist', []), \ 'config': lsp_settings#get('yaml-language-server', 'config', {}), |