mirror of https://github.com/fredrikekre/.dotfiles
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
1.3 KiB
37 lines
1.3 KiB
# 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)
|
|
|