Skip to content

Commit

Permalink
fix(zls): use workspace zls.json if available #2944
Browse files Browse the repository at this point in the history
Language server config is read from `zls.json`. By default common global
and user config directories are searched. However, this omits
per-project configuration, which can be available in the workspace dir.

We already look for `zls.json` to determine root dir, but we don't use
it when starting the language server.

This change appends `cmd` with `--config-path "zls.json"`, which uses
the file when it's available and fall-backs to default logic when file
is not available.
  • Loading branch information
lawrence-laz authored Oct 2, 2024
1 parent a62ecb7 commit 2b5e962
Showing 1 changed file with 6 additions and 0 deletions.
6 changes: 6 additions & 0 deletions lua/lspconfig/configs/zls.lua
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,11 @@ local util = require 'lspconfig.util'
return {
default_config = {
cmd = { 'zls' },
on_new_config = function(new_config, new_root_dir)
if vim.fn.filereadable(vim.fs.joinpath(new_root_dir, 'zls.json')) ~= 0 then
new_config.cmd = { 'zls', '--config-path', 'zls.json' }
end
end,
filetypes = { 'zig', 'zir' },
root_dir = util.root_pattern('zls.json', 'build.zig', '.git'),
single_file_support = true,
Expand All @@ -14,6 +19,7 @@ https://github.com/zigtools/zls
Zig LSP implementation + Zig Language Server
]],
default_config = {
cmd = { 'zls' },
root_dir = [[util.root_pattern("zls.json", "build.zig", ".git")]],
},
},
Expand Down

0 comments on commit 2b5e962

Please sign in to comment.