diff options
| author | Michael Lingelbach <m.j.lbach@gmail.com> | 2021-08-15 10:43:23 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-08-15 10:43:23 -0400 |
| commit | efd34bbb1b5678db0b0a78317fad4b726575ceef (patch) | |
| tree | 4aeec712fc6c16e4a25c9e55a72b35bf0e1183fd /lua/lspconfig/julials.lua | |
| parent | [docgen] Update CONFIG.md (diff) | |
| download | nvim-lspconfig-efd34bbb1b5678db0b0a78317fad4b726575ceef.tar nvim-lspconfig-efd34bbb1b5678db0b0a78317fad4b726575ceef.tar.gz nvim-lspconfig-efd34bbb1b5678db0b0a78317fad4b726575ceef.tar.bz2 nvim-lspconfig-efd34bbb1b5678db0b0a78317fad4b726575ceef.tar.lz nvim-lspconfig-efd34bbb1b5678db0b0a78317fad4b726575ceef.tar.xz nvim-lspconfig-efd34bbb1b5678db0b0a78317fad4b726575ceef.tar.zst nvim-lspconfig-efd34bbb1b5678db0b0a78317fad4b726575ceef.zip | |
feat(julials): set cwd for project detection (#1149)
Diffstat (limited to 'lua/lspconfig/julials.lua')
| -rw-r--r-- | lua/lspconfig/julials.lua | 64 |
1 files changed, 7 insertions, 57 deletions
diff --git a/lua/lspconfig/julials.lua b/lua/lspconfig/julials.lua index e92d17c6..f5e66dab 100644 --- a/lua/lspconfig/julials.lua +++ b/lua/lspconfig/julials.lua @@ -38,15 +38,12 @@ local cmd = { configs.julials = { default_config = { cmd = cmd, - on_new_config = function(new_config, _) - local server_path = vim.fn.system 'julia --startup-file=no -q -e \'print(Base.find_package("LanguageServer"))\'' - local new_cmd = vim.deepcopy(cmd) - table.insert(new_cmd, 2, '--project=' .. server_path:sub(0, -19)) - new_config.cmd = new_cmd + on_new_config = function(new_config, root_dir) + new_config.cmd_cwd = root_dir end, filetypes = { 'julia' }, root_dir = function(fname) - return util.find_git_ancestor(fname) or vim.fn.getcwd() + return util.find_git_ancestor(fname) or util.path.dirname(fname) end, }, docs = { @@ -58,59 +55,12 @@ https://github.com/julia-vscode/julia-vscode ```sh julia -e 'using Pkg; Pkg.add("LanguageServer"); Pkg.add("SymbolServer")' ``` -The default config lazily evaluates the location of the julia language server from the your global julia packages. -This adds a small overhead on first opening of a julia file. To avoid this overhead, replace server_path in on_new_config with -a hard-coded path to the server. +This installs LanguageServer.jl into your global julia environment. -```lua -require'lspconfig'.julials.setup{ - on_new_config = function(new_config,new_root_dir) - server_path = "/path/to/directory/containing/LanguageServer.jl/src" - cmd = { - "julia", - "--project="..server_path, - "--startup-file=no", - "--history-file=no", - "-e", [[ - using Pkg - Pkg.instantiate() - using LanguageServer - depot_path = get(ENV, "JULIA_DEPOT_PATH", "") - 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 - @info "Running language server" VERSION pwd() project_path depot_path - server = LanguageServer.LanguageServerInstance(stdin, stdout, project_path, depot_path) - server.runlinter = true - run(server) - \]\] - }; - new_config.cmd = cmd - end -} -``` -You can find the path to the globally installed LanguageServer.jl package with the following command: - -```bash -julia -e 'print(Base.find_package("LanguageServer"))' +In order to have LanguageServer.jl pick up installed packages or dependencies in a Julia project, you must first instantiate the project: +```sh +julia --project=/path/to/my/project -e 'using Pkg; Pkg.instantiate()' ``` - -Note: the directory passed to `--project=...` should terminate with src, not LanguageServer.jl. - ]], }, } |
