mirror of
https://github.com/LunarVim/LunarVim.git
synced 2024-09-21 02:55:09 +02:00
38 lines
1.3 KiB
Julia
38 lines
1.3 KiB
Julia
|
# Load LanguageServer from the project next to this file
|
||
|
## Save old load path
|
||
|
old_load_path = copy(LOAD_PATH)
|
||
|
push!(empty!(LOAD_PATH), @__DIR__)
|
||
|
## Load packages
|
||
|
using LanguageServer, SymbolServer
|
||
|
## Restore old load path
|
||
|
append!(empty!(LOAD_PATH), old_load_path)
|
||
|
|
||
|
# Figure out the active project
|
||
|
## This configuration is a good default
|
||
|
project_path = let
|
||
|
dirname(something(
|
||
|
## 1. Finds an explicitly set project (JULIA_PROJECT)
|
||
|
Base.load_path_expand((
|
||
|
p = get(ENV, "JULIA_PROJECT", nothing);
|
||
|
p === nothing ? nothing : isempty(p) ? nothing : p
|
||
|
)),
|
||
|
## 2. Look for a Project.toml file in the current working directory,
|
||
|
## or parent directories, with $HOME as an upper boundary
|
||
|
Base.current_project(),
|
||
|
## 3. First entry in the load path
|
||
|
get(Base.load_path(), 1, nothing),
|
||
|
## 4. Fallback to default global environment,
|
||
|
## this is more or less unreachable
|
||
|
Base.load_path_expand("@v#.#"),
|
||
|
))
|
||
|
end
|
||
|
|
||
|
# Depot path for the server to index (empty uses default).
|
||
|
depot_path = get(ENV, "JULIA_DEPOT_PATH", "")
|
||
|
|
||
|
# Start the server
|
||
|
@info "Running julia language server" VERSION project_path depot_path
|
||
|
server = LanguageServer.LanguageServerInstance(stdin, stdout, project_path, depot_path)
|
||
|
server.runlinter = true
|
||
|
run(server)
|