12345678910111213141516171819202122232425262728293031323334353637 |
- # 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)
|