mirror of
https://github.com/rust-lang/rust-analyzer
synced 2025-01-15 06:33:58 +00:00
Remove auto-config patching from the VSCode client
This commit is contained in:
parent
dea163970a
commit
b19f78b022
2 changed files with 0 additions and 100 deletions
|
@ -5,7 +5,6 @@ import * as Is from "vscode-languageclient/lib/common/utils/is";
|
||||||
import { assert } from "./util";
|
import { assert } from "./util";
|
||||||
import { WorkspaceEdit } from "vscode";
|
import { WorkspaceEdit } from "vscode";
|
||||||
import { Workspace } from "./ctx";
|
import { Workspace } from "./ctx";
|
||||||
import { updateConfig } from "./config";
|
|
||||||
import { substituteVariablesInEnv } from "./config";
|
import { substituteVariablesInEnv } from "./config";
|
||||||
import { outputChannel, traceOutputChannel } from "./main";
|
import { outputChannel, traceOutputChannel } from "./main";
|
||||||
import { randomUUID } from "crypto";
|
import { randomUUID } from "crypto";
|
||||||
|
@ -86,11 +85,6 @@ export async function createClient(
|
||||||
|
|
||||||
let initializationOptions = vscode.workspace.getConfiguration("rust-analyzer");
|
let initializationOptions = vscode.workspace.getConfiguration("rust-analyzer");
|
||||||
|
|
||||||
// Update outdated user configs
|
|
||||||
await updateConfig(initializationOptions).catch((err) => {
|
|
||||||
void vscode.window.showErrorMessage(`Failed updating old config keys: ${err.message}`);
|
|
||||||
});
|
|
||||||
|
|
||||||
if (workspace.kind === "Detached Files") {
|
if (workspace.kind === "Detached Files") {
|
||||||
initializationOptions = {
|
initializationOptions = {
|
||||||
detachedFiles: workspace.files.map((file) => file.uri.fsPath),
|
detachedFiles: workspace.files.map((file) => file.uri.fsPath),
|
||||||
|
|
|
@ -175,100 +175,6 @@ export class Config {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function updateConfig(config: vscode.WorkspaceConfiguration) {
|
|
||||||
const renames = [
|
|
||||||
["assist.allowMergingIntoGlobImports", "imports.merge.glob"],
|
|
||||||
["assist.exprFillDefault", "assist.expressionFillDefault"],
|
|
||||||
["assist.importEnforceGranularity", "imports.granularity.enforce"],
|
|
||||||
["assist.importGranularity", "imports.granularity.group"],
|
|
||||||
["assist.importMergeBehavior", "imports.granularity.group"],
|
|
||||||
["assist.importMergeBehaviour", "imports.granularity.group"],
|
|
||||||
["assist.importGroup", "imports.group.enable"],
|
|
||||||
["assist.importPrefix", "imports.prefix"],
|
|
||||||
["primeCaches.enable", "cachePriming.enable"],
|
|
||||||
["cache.warmup", "cachePriming.enable"],
|
|
||||||
["cargo.loadOutDirsFromCheck", "cargo.buildScripts.enable"],
|
|
||||||
["cargo.runBuildScripts", "cargo.buildScripts.enable"],
|
|
||||||
["cargo.runBuildScriptsCommand", "cargo.buildScripts.overrideCommand"],
|
|
||||||
["cargo.useRustcWrapperForBuildScripts", "cargo.buildScripts.useRustcWrapper"],
|
|
||||||
["completion.snippets", "completion.snippets.custom"],
|
|
||||||
["diagnostics.enableExperimental", "diagnostics.experimental.enable"],
|
|
||||||
["experimental.procAttrMacros", "procMacro.attributes.enable"],
|
|
||||||
["highlighting.strings", "semanticHighlighting.strings.enable"],
|
|
||||||
["highlightRelated.breakPoints", "highlightRelated.breakPoints.enable"],
|
|
||||||
["highlightRelated.exitPoints", "highlightRelated.exitPoints.enable"],
|
|
||||||
["highlightRelated.yieldPoints", "highlightRelated.yieldPoints.enable"],
|
|
||||||
["highlightRelated.references", "highlightRelated.references.enable"],
|
|
||||||
["hover.documentation", "hover.documentation.enable"],
|
|
||||||
["hover.linksInHover", "hover.links.enable"],
|
|
||||||
["hoverActions.linksInHover", "hover.links.enable"],
|
|
||||||
["hoverActions.debug", "hover.actions.debug.enable"],
|
|
||||||
["hoverActions.enable", "hover.actions.enable.enable"],
|
|
||||||
["hoverActions.gotoTypeDef", "hover.actions.gotoTypeDef.enable"],
|
|
||||||
["hoverActions.implementations", "hover.actions.implementations.enable"],
|
|
||||||
["hoverActions.references", "hover.actions.references.enable"],
|
|
||||||
["hoverActions.run", "hover.actions.run.enable"],
|
|
||||||
["inlayHints.chainingHints", "inlayHints.chainingHints.enable"],
|
|
||||||
["inlayHints.closureReturnTypeHints", "inlayHints.closureReturnTypeHints.enable"],
|
|
||||||
["inlayHints.hideNamedConstructorHints", "inlayHints.typeHints.hideNamedConstructor"],
|
|
||||||
["inlayHints.parameterHints", "inlayHints.parameterHints.enable"],
|
|
||||||
["inlayHints.reborrowHints", "inlayHints.reborrowHints.enable"],
|
|
||||||
["inlayHints.typeHints", "inlayHints.typeHints.enable"],
|
|
||||||
["lruCapacity", "lru.capacity"],
|
|
||||||
["runnables.cargoExtraArgs", "runnables.extraArgs"],
|
|
||||||
["runnables.overrideCargo", "runnables.command"],
|
|
||||||
["rustcSource", "rustc.source"],
|
|
||||||
["rustfmt.enableRangeFormatting", "rustfmt.rangeFormatting.enable"],
|
|
||||||
];
|
|
||||||
|
|
||||||
for (const [oldKey, newKey] of renames) {
|
|
||||||
const inspect = config.inspect(oldKey);
|
|
||||||
if (inspect !== undefined) {
|
|
||||||
const valMatrix = [
|
|
||||||
{
|
|
||||||
val: inspect.globalValue,
|
|
||||||
langVal: inspect.globalLanguageValue,
|
|
||||||
target: vscode.ConfigurationTarget.Global,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
val: inspect.workspaceFolderValue,
|
|
||||||
langVal: inspect.workspaceFolderLanguageValue,
|
|
||||||
target: vscode.ConfigurationTarget.WorkspaceFolder,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
val: inspect.workspaceValue,
|
|
||||||
langVal: inspect.workspaceLanguageValue,
|
|
||||||
target: vscode.ConfigurationTarget.Workspace,
|
|
||||||
},
|
|
||||||
];
|
|
||||||
for (const { val, langVal, target } of valMatrix) {
|
|
||||||
const patch = (val: unknown) => {
|
|
||||||
// some of the updates we do only append "enable" or "custom"
|
|
||||||
// that means on the next run we would find these again, but as objects with
|
|
||||||
// these properties causing us to destroy the config
|
|
||||||
// so filter those already updated ones out
|
|
||||||
return (
|
|
||||||
val !== undefined &&
|
|
||||||
!(
|
|
||||||
typeof val === "object" &&
|
|
||||||
val !== null &&
|
|
||||||
(oldKey === "completion.snippets" || !val.hasOwnProperty("custom"))
|
|
||||||
)
|
|
||||||
);
|
|
||||||
};
|
|
||||||
if (patch(val)) {
|
|
||||||
await config.update(newKey, val, target, false);
|
|
||||||
await config.update(oldKey, undefined, target, false);
|
|
||||||
}
|
|
||||||
if (patch(langVal)) {
|
|
||||||
await config.update(newKey, langVal, target, true);
|
|
||||||
await config.update(oldKey, undefined, target, true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export function substituteVariablesInEnv(env: Env): Env {
|
export function substituteVariablesInEnv(env: Env): Env {
|
||||||
const missingDeps = new Set<string>();
|
const missingDeps = new Set<string>();
|
||||||
// vscode uses `env:ENV_NAME` for env vars resolution, and it's easier
|
// vscode uses `env:ENV_NAME` for env vars resolution, and it's easier
|
||||||
|
|
Loading…
Reference in a new issue