lsp-config: Allow setting a server's environment variables (#27213)
Closes https://github.com/zed-industries/zed/issues/14334, allowing users to set environment variables for a language server binary like: ```json "lsp": { "rust-analyzer": { "binary": { "path": "/Users/dbarsky/.cargo/bin/rust-analyzer", "env": { "RA_PROFILE": "*>100" } }, } } ``` The newly introduced environment variables are merged with the shell environment. Perhaps more controversially, I've _also_ removed the trimming/`stderr:`-prefixing of language server logs. This because rust-analyzer has some nice, tree-shaped profiling built-in, and it prevents us from printing profiles like this: <details> <img width="1147" alt="Screenshot 2025-03-20 at 12 09 14 PM" src="https://github.com/user-attachments/assets/b7066651-6394-492b-b745-906c66d3c7b2" /> </details> Release Notes: - Added the ability to set a language server's environment variables. - Removed the `stderr`-prefix of a language server's stderr logs.
This commit is contained in:
parent
8f86cd758a
commit
7ade7d8e45
4 changed files with 17 additions and 7 deletions
|
@ -273,6 +273,8 @@ const fn true_value() -> bool {
|
|||
pub struct BinarySettings {
|
||||
pub path: Option<String>,
|
||||
pub arguments: Option<Vec<String>>,
|
||||
// this can't be an FxHashMap because the extension APIs require the default SipHash
|
||||
pub env: Option<std::collections::HashMap<String, String, std::hash::RandomState>>,
|
||||
pub ignore_system_version: Option<bool>,
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue