LSP plugin: settings field in .lsp.json not sent via workspace/didChangeConfiguration
Resolved 💬 4 comments Opened Mar 12, 2026 by klercker Closed Jun 24, 2026
Description
When configuring an LSP server via a project-level .lsp.json, the settings field appears to not be forwarded to the language server via workspace/didChangeConfiguration. This prevents language servers from receiving workspace-specific configuration.
Reproduction
- Install ElixirLS as a Claude Code LSP plugin (via local marketplace)
- Create a project where
mix.exsis in a subdirectory (e.g.,repo-root/proc_flow/mix.exs) - Add
.lsp.jsonat the project root:
{
"elixir-ls": {
"command": "path/to/elixir-ls",
"extensionToLanguage": { ".ex": "elixir" },
"settings": {
"elixirLS": {
"projectDir": "proc_flow"
}
}
}
}
- Restart Claude Code
- ElixirLS starts but cannot find
mix.exs— its cwd remains the repo root - Cross-module go-to-definition and workspace symbols don't work
Expected behavior
The settings from .lsp.json should be sent to the LSP server via workspace/didChangeConfiguration after initialization, allowing ElixirLS to use projectDir to locate the mix project in a subdirectory.
Additional context
workspaceFolderfield also doesn't appear to change therootUrisent in theinitializerequestinitializationOptionsare sent correctly (hover/docs work for opened files)- ElixirLS reads
projectDirfrom settings viaworkspace/didChangeConfiguration, not frominitializationOptions - This affects any monorepo layout where the language project root differs from the git root
Environment
- Claude Code: latest
- macOS
- ElixirLS v0.30.0
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗