Configurable LSP `workspace/configuration` and `didChangeConfiguration` Support in Copilot CLI
- Lingua principale
- Shell
- Stelle
- 11.2k
- Fork
- 1.9k
- Merge medio
- 14h 16m
- PR unite (30g)
- 6
Descrizione
### Describe the feature or problem you'd like to solve
Add support for configuring arbitrary Language Server Protocol (LSP) configuration payloads in Copilot CLI.
### Proposed solution
Currently, Copilot CLI can launch LSP servers, but there is no way to control what is sent through the following LSP methods:
* `workspace/didChangeConfiguration`
* `workspace/configuration`
This makes many language servers partially unusable because critical settings cannot be provided to the server.
## Problem
Many LSP servers rely heavily on runtime configuration delivered through LSP configuration requests instead of command-line arguments or environment variables.
For example, `intelephense` requires configuration for:
* excluded file patterns
* storage/indexing behavior
* diagnostics
* stubs
* file size limits
Without support for configuration payloads:
* large monorepos become slow or unusable
* excluded/vendor/generated files cannot be filtered
* indexing behavior cannot be tuned
* workspace-specific settings cannot be applied
At the moment, Copilot CLI appears to start the server successfully but provides no mechanism for forwarding user-defined configuration objects to the LSP server. The option `initializationOptions` does not solve this problem either because many LSP servers - including Intelephense - expect runtime settings to be delivered specifically through the standard LSP configuration flow (`workspace/didChangeConfiguration` and `workspace/configuration`).
## Proposed Solution
Allow arbitrary configuration blocks to be defined per language server and forwarded via:
* `workspace/didChangeConfiguration`
* responses to `workspace/configuration`
Example configuration:
```json
{
"php": {
"command": "intelephense",
"args": [
"--stdio"
],
"fileExtensions": {
".php": "php"
},
"configuration": {
"intelephense": {
"files": {
"exclude": [
"**/vendor/**",
"**/var/cache/**",
"**/node_modules/**"
]
},
"environment": {
"phpVersion": "8.5"
},
"diagnostics": {
"undefinedTypes": false
}
}
}
}
}
```
## Expected Behavior
Copilot CLI should:
1. Send the provided configuration object through `workspace/didChangeConfiguration`
2. Respond to `workspace/configuration` requests using the configured values
3. Support arbitrary nested JSON structures
### Example prompts or workflows
_No response_
### Additional context
_No response_
Guida per i contributori
Apri la guida per i contributori
Direzione di ricerca
La issue identifica i metodi LSP workspace/didChangeConfiguration e workspace/configuration come punti di ingresso rilevanti; inizia tracciando il modo in cui Copilot CLI avvia i server LSP e instrada questi messaggi. Il lavoro è completato quando ogni server di linguaggio può ricevere configurazioni annidate arbitrarie tramite entrambi i metodi, comprese le impostazioni di esempio di Intelephense.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- shell
- Ambito
- cli, tooling
- Tipo di issue
- Funzionalità
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Tranquilla
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 55/100