I found the problems:
- I was using Julia 1.6.2 which SymbolServer didn’t like (julia-vscode/SymbolServer.jl#224).
- I was passing the path to the
Project.toml
file, which SymbolServer didn’t like since it unconditionally appendedProject.toml
to the path and thus looked for things in.../Project.toml/Project.toml
(julia-vscode/SymbolServer.jl#227).
Here is my new configuration: fredrikekre/.dotfiles. Relevant extract:
init.vim
:
lua << EOF
local cmd = {
"julia",
"--startup-file=no",
"--history-file=no",
vim.fn.expand("~/.config/nvim/lsp-julia/run.jl")
}
require'lspconfig'.julials.setup{
cmd = cmd,
-- Why do I need this? Shouldn't it be enough to override cmd on the line above?
on_new_config = function(new_config, _)
new_config.cmd = cmd
end,
filetypes = {"julia"},
}
-- vim.lsp.set_log_level("debug")
EOF
~/.config/nvim/lsp-julia/run.jl
:
# 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)