From d33aa518ec21a1e7f6047a4c5f31c111fce4a7f3 Mon Sep 17 00:00:00 2001 From: Bob Brown Date: Fri, 20 Jul 2018 16:41:15 -0700 Subject: [PATCH] minor tweaks to config provider experience --- Extension/src/LanguageServer/client.ts | 2 +- Extension/src/LanguageServer/configurations.ts | 13 ++++++++++++- Extension/src/LanguageServer/ui.ts | 8 ++++++-- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/Extension/src/LanguageServer/client.ts b/Extension/src/LanguageServer/client.ts index c3af87f00..1c51df1a6 100644 --- a/Extension/src/LanguageServer/client.ts +++ b/Extension/src/LanguageServer/client.ts @@ -1068,7 +1068,7 @@ class DefaultClient implements Client { public handleConfigurationProviderSelectCommand(): void { this.notifyWhenReady(() => { - ui.showConfigurationProviders() + ui.showConfigurationProviders(this.configuration.CurrentConfigurationProvider) .then(extensionId => { if (extensionId === undefined) { // operation was cancelled. diff --git a/Extension/src/LanguageServer/configurations.ts b/Extension/src/LanguageServer/configurations.ts index 3e6f3e598..c0e5679be 100644 --- a/Extension/src/LanguageServer/configurations.ts +++ b/Extension/src/LanguageServer/configurations.ts @@ -343,7 +343,11 @@ export class CppProperties { }); } else { let settings: CppSettings = new CppSettings(this.rootUri); - settings.update("default.configurationProvider", providerId); + if (providerId) { + settings.update("default.configurationProvider", providerId); + } else { + settings.update("default.configurationProvider", undefined); // delete the setting + } this.CurrentConfiguration.configurationProvider = providerId; resolve(); } @@ -513,6 +517,13 @@ export class CppProperties { this.resetToDefaultSettings(true); } this.applyDefaultIncludePathsAndFrameworks(); + let settings: CppSettings = new CppSettings(this.rootUri); + if (settings.defaultConfigurationProvider) { + this.configurationJson.configurations.forEach(config => { + config.configurationProvider = settings.defaultConfigurationProvider; + }); + settings.update("default.configurationProvider", undefined); // delete the setting + } edit.insert(document.uri, new vscode.Position(0, 0), JSON.stringify(this.configurationJson, null, 4)); vscode.workspace.applyEdit(edit).then((status) => { // Fix for issue 163 diff --git a/Extension/src/LanguageServer/ui.ts b/Extension/src/LanguageServer/ui.ts index 72f3ea71b..7447d5471 100644 --- a/Extension/src/LanguageServer/ui.ts +++ b/Extension/src/LanguageServer/ui.ts @@ -164,14 +164,18 @@ export class UI { .then(selection => (selection) ? selection.index : -1); } - public showConfigurationProviders(): Thenable { + public showConfigurationProviders(currentProvider: string|null): Thenable { let options: vscode.QuickPickOptions = {}; options.placeHolder = "Select a Configuration Provider..."; let providers: CustomConfigurationProviderCollection = getCustomConfigProviders(); let items: KeyedQuickPickItem[] = []; providers.forEach(provider => { - items.push({ label: provider.name, description: "", key: provider.extensionId }); + let label: string = provider.name; + if (provider.extensionId === currentProvider) { + label += " (active)"; + } + items.push({ label: label, description: "", key: provider.extensionId }); }); items.push({ label: "(none)", description: "Disable the active configuration provider, if applicable.", key: "" });