diff options
Diffstat (limited to 'lua/mason-registry/julia-lsp/init.lua')
| -rw-r--r-- | lua/mason-registry/julia-lsp/init.lua | 33 |
1 files changed, 30 insertions, 3 deletions
diff --git a/lua/mason-registry/julia-lsp/init.lua b/lua/mason-registry/julia-lsp/init.lua index 14318009..d3dacdfe 100644 --- a/lua/mason-registry/julia-lsp/init.lua +++ b/lua/mason-registry/julia-lsp/init.lua @@ -2,13 +2,25 @@ local Pkg = require "mason-core.package" local path = require "mason-core.path" local std = require "mason-core.managers.std" local github = require "mason-core.managers.github" +local platform = require "mason-core.platform" local server_script = [[ +if VERSION < v"1.0.0" + error("julia language server only works with julia 1.0.0+") +end + +import Pkg +version_specific_env_path = joinpath(@__DIR__, "scripts", "environments", "languageserver", "v$(VERSION.major).$(VERSION.minor)") +if isdir(version_specific_env_path) + Pkg.activate(version_specific_env_path) +else + Pkg.activate(joinpath(@__DIR__, "scripts", "environments", "languageserver", "fallback")) +end + using LanguageServer, SymbolServer, Pkg OLD_DEPOT_PATH = ARGS[1] -SYMBOLSTORE_PATH = ARGS[2] -ENV_PATH = ARGS[3] +ENV_PATH = ARGS[2] runserver( stdin, @@ -16,7 +28,7 @@ runserver( ENV_PATH, OLD_DEPOT_PATH, nothing, - SYMBOLSTORE_PATH + ENV["SYMBOLSTORE_PATH"] ) ]] @@ -55,5 +67,20 @@ return Pkg.new { ctx.fs:rmrf "vscode-package" ctx.fs:write_file("nvim-lsp.jl", server_script) + ctx:link_bin( + "julia-lsp", + ctx:write_shell_exec_wrapper( + "julia-lsp", + ("julia --startup-file=no --history-file=no --depwarn=no %q"):format(path.concat { + ctx.package:get_install_path(), + "nvim-lsp.jl", + }), + { + SYMBOLSTORE_PATH = path.concat { ctx.package:get_install_path(), "symbolstorev5" }, + JULIA_DEPOT_PATH = path.concat { ctx.package:get_install_path(), "lsdepot" }, + JULIA_LOAD_PATH = platform.is.win and ";" or ":", + } + ) + ) end, } |
