diff --git a/editors/code/src/client.ts b/editors/code/src/client.ts index 03f5d43051..9a576570be 100644 --- a/editors/code/src/client.ts +++ b/editors/code/src/client.ts @@ -96,7 +96,9 @@ export async function createClient( if (resp && Array.isArray(resp)) { return resp.map((val) => { return prepareVSCodeConfig(val, (key, cfg) => { - cfg[key] = config.discoveredWorkspaces; + if (key === "linkedProjects") { + cfg[key] = config.discoveredWorkspaces; + } }); }); } else { diff --git a/editors/code/src/config.ts b/editors/code/src/config.ts index 7540372547..da7c74c28b 100644 --- a/editors/code/src/config.ts +++ b/editors/code/src/config.ts @@ -287,6 +287,14 @@ export class Config { } } +// the optional `cb?` parameter is meant to be used to add additional +// key/value pairs to the VS Code configuration. This needed for, e.g., +// including a `rust-project.json` into the `linkedProjects` key as part +// of the configuration/InitializationParams _without_ causing VS Code +// configuration to be written out to workspace-level settings. This is +// undesirable behavior because rust-project.json files can be tens of +// thousands of lines of JSON, most of which is not meant for humans +// to interact with. export function prepareVSCodeConfig( resp: T, cb?: (key: Extract, res: { [key: string]: any }) => void