Unnamed repository; edit this file 'description' to name the repository.
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)
bors 2022-08-26
parent 5c52e05 · parent b19f78b · commit 55bf51d
-rw-r--r--editors/code/src/client.ts6
-rw-r--r--editors/code/src/config.ts94
2 files changed, 0 insertions, 100 deletions
diff --git a/editors/code/src/client.ts b/editors/code/src/client.ts
index 27ab31db8d..719d273464 100644
--- a/editors/code/src/client.ts
+++ b/editors/code/src/client.ts
@@ -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),
diff --git a/editors/code/src/config.ts b/editors/code/src/config.ts
index 07e899eb0a..a9c0f079b3 100644
--- a/editors/code/src/config.ts
+++ b/editors/code/src/config.ts
@@ -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