Skip to content

Commit a11b2ae

Browse files
authored
Support both provider ID's for cmake-tools (#4587)
1 parent 1a7e9b9 commit a11b2ae

File tree

4 files changed

+33
-6
lines changed

4 files changed

+33
-6
lines changed

Extension/src/LanguageServer/client.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import * as logger from '../logger';
2626
import { updateLanguageConfigurations, registerCommands } from './extension';
2727
import { SettingsTracker, getTracker } from './settingsTracker';
2828
import { getTestHook, TestHook } from '../testHook';
29-
import { getCustomConfigProviders, CustomConfigurationProviderCollection, CustomConfigurationProvider1 } from '../LanguageServer/customProviders';
29+
import { getCustomConfigProviders, CustomConfigurationProviderCollection, CustomConfigurationProvider1, isSameProviderExtensionId } from '../LanguageServer/customProviders';
3030
import { ABTestSettings, getABTestSettings } from '../abTesting';
3131
import * as fs from 'fs';
3232
import * as os from 'os';
@@ -1167,7 +1167,7 @@ export class DefaultClient implements Client {
11671167
},
11681168
() => ask.Value = false);
11691169
}
1170-
} else if (selectedProvider === provider.extensionId) {
1170+
} else if (isSameProviderExtensionId(selectedProvider, provider.extensionId)) {
11711171
onRegistered();
11721172
telemetry.logLanguageServerEvent("customConfigurationProvider", { "providerId": provider.extensionId });
11731173
} else if (selectedProvider === provider.name) {
@@ -1974,7 +1974,7 @@ export class DefaultClient implements Client {
19741974
this.model.activeConfigName.Value = configurations[params.currentConfiguration].name;
19751975
}).then(() => {
19761976
let newProvider: string = this.configuration.CurrentConfigurationProvider;
1977-
if (this.configurationProvider !== newProvider) {
1977+
if (!isSameProviderExtensionId(newProvider, this.configurationProvider)) {
19781978
this.configurationProvider = newProvider;
19791979
this.updateCustomConfigurations();
19801980
this.updateCustomBrowseConfiguration();

Extension/src/LanguageServer/customProviders.ts

+27
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ export interface CustomConfigurationProvider1 extends CustomConfigurationProvide
1717
readonly version: Version;
1818
}
1919

20+
const oldCmakeToolsExtensionId: string = "vector-of-bool.cmake-tools";
21+
const newCmakeToolsExtensionId: string = "ms-vscode.cmake-tools";
22+
2023
/**
2124
* Wraps the incoming CustomConfigurationProvider so that we can treat all of them as if they were the same version (e.g. latest)
2225
*/
@@ -185,6 +188,18 @@ export class CustomConfigurationProviderCollection {
185188
if (this.providers.has(id)) {
186189
return this.providers.get(id);
187190
}
191+
192+
if (typeof provider === "string") {
193+
// Consider old and new names for cmake-tools as equivalent
194+
if (provider === newCmakeToolsExtensionId) {
195+
id = oldCmakeToolsExtensionId;
196+
} else if (provider === oldCmakeToolsExtensionId) {
197+
id = newCmakeToolsExtensionId;
198+
}
199+
if (this.providers.has(id)) {
200+
return this.providers.get(id);
201+
}
202+
}
188203
return null;
189204
}
190205

@@ -231,3 +246,15 @@ let providerCollection: CustomConfigurationProviderCollection = new CustomConfig
231246
export function getCustomConfigProviders(): CustomConfigurationProviderCollection {
232247
return providerCollection;
233248
}
249+
250+
export function isSameProviderExtensionId(settingExtensionId: string, providerExtensionId: string): boolean {
251+
if (settingExtensionId === providerExtensionId) {
252+
return true;
253+
}
254+
// Consider old and new names for cmake-tools as equivalent
255+
if ((settingExtensionId === newCmakeToolsExtensionId && providerExtensionId === oldCmakeToolsExtensionId)
256+
|| (settingExtensionId === oldCmakeToolsExtensionId && providerExtensionId === newCmakeToolsExtensionId)) {
257+
return true;
258+
}
259+
return false;
260+
}

Extension/src/LanguageServer/ui.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import * as vscode from 'vscode';
88
import { Client } from './client';
99
import { ReferencesCommandMode, referencesCommandModeToString } from './references';
10-
import { getCustomConfigProviders, CustomConfigurationProviderCollection } from './customProviders';
10+
import { getCustomConfigProviders, CustomConfigurationProviderCollection, isSameProviderExtensionId } from './customProviders';
1111
import * as nls from 'vscode-nls';
1212

1313
nls.config({ messageFormat: nls.MessageFormat.bundle, bundleFormat: nls.BundleFormat.standalone })();
@@ -195,7 +195,7 @@ export class UI {
195195
let items: KeyedQuickPickItem[] = [];
196196
providers.forEach(provider => {
197197
let label: string = provider.name;
198-
if (provider.extensionId === currentProvider) {
198+
if (isSameProviderExtensionId(currentProvider, provider.extensionId)) {
199199
label += ` (${localize("active", "active")})`;
200200
}
201201
items.push({ label: label, description: "", key: provider.extensionId });

Extension/ui/settings.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -572,7 +572,7 @@
572572

573573
<div class="section">
574574
<div class="section-title" data-loc-id="configuration.provider">Configuration provider</div>
575-
<div class="section-text" data-loc-id="configuration.provider.description">The ID of a VS Code extension that can provide IntelliSense configuration information for source files. For example, use the VS Code extension ID <code>vector-of-bool.cmake-tools</code> to provide configuration information from the CMake Tools extension.</div>
575+
<div class="section-text" data-loc-id="configuration.provider.description">The ID of a VS Code extension that can provide IntelliSense configuration information for source files. For example, use the VS Code extension ID <code>ms-vscode.cmake-tools</code> to provide configuration information from the CMake Tools extension.</div>
576576
<div>
577577
<input name="inputValue" id="configurationProvider" style="width: 290px"></input>
578578
</div>

0 commit comments

Comments
 (0)