mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-11-14 17:07:26 +00:00
Auto merge of #13087 - Veykril:config-update, r=Veykril
Remove auto-config patching from the VSCode client This was introduced 4 months ago when we drastically changed the config keys. I'd like to remove this given I always felt uneasy doing edits to a users config from within r-a, and by now most if not all users should've swapped to a new enough version of r-a that should've updated their configs. The extension will continue to work fine even with the outdated keys afterwards since we still do patching server side as well, and that one we'll have to support for quite some more time (if not until a proper 1.0 release where I assume we can allow ourselves some more user facing breakage) (There also might've been a small bug in here that prevented users with certain outdated keys to prevent them from enabling certain keys for some reason)
This commit is contained in:
commit
55bf51df41
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 { WorkspaceEdit } from "vscode";
|
||||
import { Workspace } from "./ctx";
|
||||
import { updateConfig } from "./config";
|
||||
import { substituteVariablesInEnv } from "./config";
|
||||
import { outputChannel, traceOutputChannel } from "./main";
|
||||
import { randomUUID } from "crypto";
|
||||
|
@ -86,11 +85,6 @@ export async function createClient(
|
|||
|
||||
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") {
|
||||
initializationOptions = {
|
||||
detachedFiles: workspace.files.map((file) => file.uri.fsPath),
|
||||
|
|
|
@ -173,100 +173,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 {
|
||||
const missingDeps = new Set<string>();
|
||||
// vscode uses `env:ENV_NAME` for env vars resolution, and it's easier
|
||||
|
|
Loading…
Reference in a new issue