From 46c7dd54a8812f6a7291909b69f63f984c639558 Mon Sep 17 00:00:00 2001 From: Colen Garoutte-Carson Date: Thu, 19 Dec 2024 15:00:13 -0800 Subject: [PATCH 1/5] Don't reset everyones databases --- Extension/src/LanguageServer/client.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Extension/src/LanguageServer/client.ts b/Extension/src/LanguageServer/client.ts index 47e5d2821..64dcdce95 100644 --- a/Extension/src/LanguageServer/client.ts +++ b/Extension/src/LanguageServer/client.ts @@ -1385,6 +1385,9 @@ export class DefaultClient implements Client { let filesEncodingChanged: boolean = false; if (workspaceFolder) { const lastFilesEncoding: PersistentFolderState = new PersistentFolderState("CPP.lastFilesEncoding", "", workspaceFolder); + if (lastFilesEncoding.Value === "") { + lastFilesEncoding.Value = filesEncoding; + } filesEncodingChanged = lastFilesEncoding.Value !== filesEncoding; } const result: WorkspaceFolderSettingsParams = { @@ -1520,6 +1523,9 @@ export class DefaultClient implements Client { } const workspaceFallbackEncoding: string = workspaceOtherSettings.filesEncoding; const lastWorkspaceFallbackEncoding: PersistentState = new PersistentState("CPP.lastWorkspaceFallbackEncoding", ""); + if (lastWorkspaceFallbackEncoding.Value === "") { + lastWorkspaceFallbackEncoding.Value = workspaceFallbackEncoding; + } const workspaceFallbackEncodingChanged = lastWorkspaceFallbackEncoding.Value !== workspaceFallbackEncoding; return { filesAssociations: workspaceOtherSettings.filesAssociations, From 450d2144af5c0be2cc199f216049a8e7d262598f Mon Sep 17 00:00:00 2001 From: Colen Garoutte-Carson Date: Thu, 19 Dec 2024 15:14:54 -0800 Subject: [PATCH 2/5] Address PR feedback --- Extension/src/LanguageServer/client.ts | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/Extension/src/LanguageServer/client.ts b/Extension/src/LanguageServer/client.ts index 64dcdce95..ed807275a 100644 --- a/Extension/src/LanguageServer/client.ts +++ b/Extension/src/LanguageServer/client.ts @@ -1384,10 +1384,7 @@ export class DefaultClient implements Client { const filesEncoding: string = otherSettings.filesEncoding; let filesEncodingChanged: boolean = false; if (workspaceFolder) { - const lastFilesEncoding: PersistentFolderState = new PersistentFolderState("CPP.lastFilesEncoding", "", workspaceFolder); - if (lastFilesEncoding.Value === "") { - lastFilesEncoding.Value = filesEncoding; - } + const lastFilesEncoding: PersistentFolderState = new PersistentFolderState("CPP.lastFilesEncoding", filesEncoding, workspaceFolder); filesEncodingChanged = lastFilesEncoding.Value !== filesEncoding; } const result: WorkspaceFolderSettingsParams = { @@ -1522,10 +1519,7 @@ export class DefaultClient implements Client { void util.promptForReloadWindowDueToSettingsChange(); } const workspaceFallbackEncoding: string = workspaceOtherSettings.filesEncoding; - const lastWorkspaceFallbackEncoding: PersistentState = new PersistentState("CPP.lastWorkspaceFallbackEncoding", ""); - if (lastWorkspaceFallbackEncoding.Value === "") { - lastWorkspaceFallbackEncoding.Value = workspaceFallbackEncoding; - } + const lastWorkspaceFallbackEncoding: PersistentState = new PersistentState("CPP.lastWorkspaceFallbackEncoding", workspaceFallbackEncoding); const workspaceFallbackEncodingChanged = lastWorkspaceFallbackEncoding.Value !== workspaceFallbackEncoding; return { filesAssociations: workspaceOtherSettings.filesAssociations, From 6979c6bcb2e588a403f0d38d42ae80411a5d5529 Mon Sep 17 00:00:00 2001 From: Colen Garoutte-Carson Date: Thu, 19 Dec 2024 15:35:25 -0800 Subject: [PATCH 3/5] Revert "Address PR feedback" This reverts commit 450d2144af5c0be2cc199f216049a8e7d262598f. --- Extension/src/LanguageServer/client.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Extension/src/LanguageServer/client.ts b/Extension/src/LanguageServer/client.ts index ed807275a..64dcdce95 100644 --- a/Extension/src/LanguageServer/client.ts +++ b/Extension/src/LanguageServer/client.ts @@ -1384,7 +1384,10 @@ export class DefaultClient implements Client { const filesEncoding: string = otherSettings.filesEncoding; let filesEncodingChanged: boolean = false; if (workspaceFolder) { - const lastFilesEncoding: PersistentFolderState = new PersistentFolderState("CPP.lastFilesEncoding", filesEncoding, workspaceFolder); + const lastFilesEncoding: PersistentFolderState = new PersistentFolderState("CPP.lastFilesEncoding", "", workspaceFolder); + if (lastFilesEncoding.Value === "") { + lastFilesEncoding.Value = filesEncoding; + } filesEncodingChanged = lastFilesEncoding.Value !== filesEncoding; } const result: WorkspaceFolderSettingsParams = { @@ -1519,7 +1522,10 @@ export class DefaultClient implements Client { void util.promptForReloadWindowDueToSettingsChange(); } const workspaceFallbackEncoding: string = workspaceOtherSettings.filesEncoding; - const lastWorkspaceFallbackEncoding: PersistentState = new PersistentState("CPP.lastWorkspaceFallbackEncoding", workspaceFallbackEncoding); + const lastWorkspaceFallbackEncoding: PersistentState = new PersistentState("CPP.lastWorkspaceFallbackEncoding", ""); + if (lastWorkspaceFallbackEncoding.Value === "") { + lastWorkspaceFallbackEncoding.Value = workspaceFallbackEncoding; + } const workspaceFallbackEncodingChanged = lastWorkspaceFallbackEncoding.Value !== workspaceFallbackEncoding; return { filesAssociations: workspaceOtherSettings.filesAssociations, From 18640e6d40f8561580f2fc6c72fc1e66c691a15d Mon Sep 17 00:00:00 2001 From: Colen Garoutte-Carson Date: Thu, 19 Dec 2024 15:38:19 -0800 Subject: [PATCH 4/5] Reapply "Address PR feedback" This reverts commit 6979c6bcb2e588a403f0d38d42ae80411a5d5529. --- Extension/src/LanguageServer/client.ts | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/Extension/src/LanguageServer/client.ts b/Extension/src/LanguageServer/client.ts index 64dcdce95..ed807275a 100644 --- a/Extension/src/LanguageServer/client.ts +++ b/Extension/src/LanguageServer/client.ts @@ -1384,10 +1384,7 @@ export class DefaultClient implements Client { const filesEncoding: string = otherSettings.filesEncoding; let filesEncodingChanged: boolean = false; if (workspaceFolder) { - const lastFilesEncoding: PersistentFolderState = new PersistentFolderState("CPP.lastFilesEncoding", "", workspaceFolder); - if (lastFilesEncoding.Value === "") { - lastFilesEncoding.Value = filesEncoding; - } + const lastFilesEncoding: PersistentFolderState = new PersistentFolderState("CPP.lastFilesEncoding", filesEncoding, workspaceFolder); filesEncodingChanged = lastFilesEncoding.Value !== filesEncoding; } const result: WorkspaceFolderSettingsParams = { @@ -1522,10 +1519,7 @@ export class DefaultClient implements Client { void util.promptForReloadWindowDueToSettingsChange(); } const workspaceFallbackEncoding: string = workspaceOtherSettings.filesEncoding; - const lastWorkspaceFallbackEncoding: PersistentState = new PersistentState("CPP.lastWorkspaceFallbackEncoding", ""); - if (lastWorkspaceFallbackEncoding.Value === "") { - lastWorkspaceFallbackEncoding.Value = workspaceFallbackEncoding; - } + const lastWorkspaceFallbackEncoding: PersistentState = new PersistentState("CPP.lastWorkspaceFallbackEncoding", workspaceFallbackEncoding); const workspaceFallbackEncodingChanged = lastWorkspaceFallbackEncoding.Value !== workspaceFallbackEncoding; return { filesAssociations: workspaceOtherSettings.filesAssociations, From 9b15276ef40201d8513e994a6fcb151eda4af2c9 Mon Sep 17 00:00:00 2001 From: Colen Garoutte-Carson Date: Thu, 19 Dec 2024 15:39:48 -0800 Subject: [PATCH 5/5] Always write the default to the state store, if unset --- Extension/src/LanguageServer/persistentState.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Extension/src/LanguageServer/persistentState.ts b/Extension/src/LanguageServer/persistentState.ts index e96be7a0e..7eb96ab5f 100644 --- a/Extension/src/LanguageServer/persistentState.ts +++ b/Extension/src/LanguageServer/persistentState.ts @@ -19,6 +19,11 @@ class PersistentStateBase { this.defaultvalue = defaultValue; this.state = state; this.curvalue = defaultValue; + + // Ensure the default is written to the state store. + if (this.state && this.state.get(this.key) === undefined) { + void this.state.update(this.key, this.defaultvalue); + } } public get Value(): T {