提交 bf8f01a4 编写于 作者: M Martin Aeschlimann

wsl extension id should come from product.json

上级 f127867e
...@@ -17,6 +17,10 @@ import { Emitter, Event } from 'vs/base/common/event'; ...@@ -17,6 +17,10 @@ import { Emitter, Event } from 'vs/base/common/event';
import { basename } from 'vs/base/common/path'; import { basename } from 'vs/base/common/path';
import { IExtensionManagementService } from 'vs/platform/extensionManagement/common/extensionManagement'; import { IExtensionManagementService } from 'vs/platform/extensionManagement/common/extensionManagement';
import { ExtensionType } from 'vs/platform/extensions/common/extensions'; import { ExtensionType } from 'vs/platform/extensions/common/extensions';
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
import { InstallRecommendedExtensionAction } from 'vs/workbench/contrib/extensions/browser/extensionsActions';
import { IProductService } from 'vs/platform/product/common/product';
const MINIMUM_FONT_SIZE = 6; const MINIMUM_FONT_SIZE = 6;
const MAXIMUM_FONT_SIZE = 25; const MAXIMUM_FONT_SIZE = 25;
...@@ -40,7 +44,10 @@ export class TerminalConfigHelper implements IBrowserTerminalConfigHelper { ...@@ -40,7 +44,10 @@ export class TerminalConfigHelper implements IBrowserTerminalConfigHelper {
@IConfigurationService private readonly _configurationService: IConfigurationService, @IConfigurationService private readonly _configurationService: IConfigurationService,
@IExtensionManagementService private readonly _extensionManagementService: IExtensionManagementService, @IExtensionManagementService private readonly _extensionManagementService: IExtensionManagementService,
@INotificationService private readonly _notificationService: INotificationService, @INotificationService private readonly _notificationService: INotificationService,
@IStorageService private readonly _storageService: IStorageService @IStorageService private readonly _storageService: IStorageService,
@ITelemetryService private readonly telemetryService: ITelemetryService,
@IInstantiationService private readonly instantiationService: IInstantiationService,
@IProductService private readonly productService: IProductService
) { ) {
this._updateConfig(); this._updateConfig();
this._configurationService.onDidChangeConfiguration(e => { this._configurationService.onDidChangeConfiguration(e => {
...@@ -263,18 +270,42 @@ export class TerminalConfigHelper implements IBrowserTerminalConfigHelper { ...@@ -263,18 +270,42 @@ export class TerminalConfigHelper implements IBrowserTerminalConfigHelper {
this.recommendationsShown = true; this.recommendationsShown = true;
if (platform.isWindows && shellLaunchConfig.executable && basename(shellLaunchConfig.executable).toLowerCase() === 'wsl.exe') { if (platform.isWindows && shellLaunchConfig.executable && basename(shellLaunchConfig.executable).toLowerCase() === 'wsl.exe') {
if (! await this.isExtensionInstalled('ms-vscode-remote.remote-wsl')) { const exeBasedExtensionTips = this.productService.exeBasedExtensionTips;
if (!exeBasedExtensionTips || !exeBasedExtensionTips.wsl) {
return;
}
const extId = exeBasedExtensionTips.wsl.recommendations[0];
if (extId && ! await this.isExtensionInstalled(extId)) {
this._notificationService.prompt( this._notificationService.prompt(
Severity.Info, Severity.Info,
nls.localize( nls.localize(
'useWslExtension.title', 'useWslExtension.title', "The '{0}' extension is recommended for opening a terminal in WSL.", exeBasedExtensionTips.wsl.friendlyName),
"Check out the 'Visual Studio Code Remote - WSL' extension for a great development experience in WSL. Click [here]({0}) to learn more.", [
'https://go.microsoft.com/fwlink/?linkid=2097212' {
), label: nls.localize('install', 'Install'),
[], run: () => {
/* __GDPR__
"terminalLaunchRecommendation:popup" : {
"userReaction" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" },
"extensionId": { "classification": "PublicNonPersonalData", "purpose": "FeatureInsight" }
}
*/
this.telemetryService.publicLog('terminalLaunchRecommendation:popup', { userReaction: 'install', extId });
this.instantiationService.createInstance(InstallRecommendedExtensionAction, extId).run();
}
}
],
{ {
sticky: true, sticky: true,
neverShowAgain: { id: 'terminalConfigHelper/launchRecommendationsIgnore', scope: NeverShowAgainScope.WORKSPACE } neverShowAgain: { id: 'terminalConfigHelper/launchRecommendationsIgnore', scope: NeverShowAgainScope.WORKSPACE },
onCancel: () => {
/* __GDPR__
"terminalLaunchRecommendation:popup" : {
"userReaction" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }
}
*/
this.telemetryService.publicLog('terminalLaunchRecommendation:popup', { userReaction: 'cancelled' });
}
} }
); );
} }
......
...@@ -29,7 +29,7 @@ suite('Workbench - TerminalConfigHelper', () => { ...@@ -29,7 +29,7 @@ suite('Workbench - TerminalConfigHelper', () => {
const configurationService = new TestConfigurationService(); const configurationService = new TestConfigurationService();
configurationService.setUserConfiguration('editor', { fontFamily: 'foo' }); configurationService.setUserConfiguration('editor', { fontFamily: 'foo' });
configurationService.setUserConfiguration('terminal', { integrated: { fontFamily: null } }); configurationService.setUserConfiguration('terminal', { integrated: { fontFamily: null } });
const configHelper = new TerminalConfigHelper(LinuxDistro.Fedora, configurationService, null!, null!, null!); const configHelper = new TerminalConfigHelper(LinuxDistro.Fedora, configurationService, null!, null!, null!, null!, null!, null!);
configHelper.panelContainer = fixture; configHelper.panelContainer = fixture;
assert.equal(configHelper.getFont().fontFamily, '\'DejaVu Sans Mono\', monospace', 'Fedora should have its font overridden when terminal.integrated.fontFamily not set'); assert.equal(configHelper.getFont().fontFamily, '\'DejaVu Sans Mono\', monospace', 'Fedora should have its font overridden when terminal.integrated.fontFamily not set');
}); });
...@@ -38,7 +38,7 @@ suite('Workbench - TerminalConfigHelper', () => { ...@@ -38,7 +38,7 @@ suite('Workbench - TerminalConfigHelper', () => {
const configurationService = new TestConfigurationService(); const configurationService = new TestConfigurationService();
configurationService.setUserConfiguration('editor', { fontFamily: 'foo' }); configurationService.setUserConfiguration('editor', { fontFamily: 'foo' });
configurationService.setUserConfiguration('terminal', { integrated: { fontFamily: null } }); configurationService.setUserConfiguration('terminal', { integrated: { fontFamily: null } });
const configHelper = new TerminalConfigHelper(LinuxDistro.Ubuntu, configurationService, null!, null!, null!); const configHelper = new TerminalConfigHelper(LinuxDistro.Ubuntu, configurationService, null!, null!, null!, null!, null!, null!);
configHelper.panelContainer = fixture; configHelper.panelContainer = fixture;
assert.equal(configHelper.getFont().fontFamily, '\'Ubuntu Mono\', monospace', 'Ubuntu should have its font overridden when terminal.integrated.fontFamily not set'); assert.equal(configHelper.getFont().fontFamily, '\'Ubuntu Mono\', monospace', 'Ubuntu should have its font overridden when terminal.integrated.fontFamily not set');
}); });
...@@ -47,7 +47,7 @@ suite('Workbench - TerminalConfigHelper', () => { ...@@ -47,7 +47,7 @@ suite('Workbench - TerminalConfigHelper', () => {
const configurationService = new TestConfigurationService(); const configurationService = new TestConfigurationService();
configurationService.setUserConfiguration('editor', { fontFamily: 'foo' }); configurationService.setUserConfiguration('editor', { fontFamily: 'foo' });
configurationService.setUserConfiguration('terminal', { integrated: { fontFamily: null } }); configurationService.setUserConfiguration('terminal', { integrated: { fontFamily: null } });
const configHelper = new TerminalConfigHelper(LinuxDistro.Unknown, configurationService, null!, null!, null!); const configHelper = new TerminalConfigHelper(LinuxDistro.Unknown, configurationService, null!, null!, null!, null!, null!, null!);
configHelper.panelContainer = fixture; configHelper.panelContainer = fixture;
assert.equal(configHelper.getFont().fontFamily, 'foo', 'editor.fontFamily should be the fallback when terminal.integrated.fontFamily not set'); assert.equal(configHelper.getFont().fontFamily, 'foo', 'editor.fontFamily should be the fallback when terminal.integrated.fontFamily not set');
}); });
...@@ -65,7 +65,7 @@ suite('Workbench - TerminalConfigHelper', () => { ...@@ -65,7 +65,7 @@ suite('Workbench - TerminalConfigHelper', () => {
fontSize: 10 fontSize: 10
} }
}); });
let configHelper = new TerminalConfigHelper(LinuxDistro.Unknown, configurationService, null!, null!, null!); let configHelper = new TerminalConfigHelper(LinuxDistro.Unknown, configurationService, null!, null!, null!, null!, null!, null!);
configHelper.panelContainer = fixture; configHelper.panelContainer = fixture;
assert.equal(configHelper.getFont().fontSize, 10, 'terminal.integrated.fontSize should be selected over editor.fontSize'); assert.equal(configHelper.getFont().fontSize, 10, 'terminal.integrated.fontSize should be selected over editor.fontSize');
...@@ -78,11 +78,11 @@ suite('Workbench - TerminalConfigHelper', () => { ...@@ -78,11 +78,11 @@ suite('Workbench - TerminalConfigHelper', () => {
fontSize: 0 fontSize: 0
} }
}); });
configHelper = new TerminalConfigHelper(LinuxDistro.Ubuntu, configurationService, null!, null!, null!); configHelper = new TerminalConfigHelper(LinuxDistro.Ubuntu, configurationService, null!, null!, null!, null!, null!, null!);
configHelper.panelContainer = fixture; configHelper.panelContainer = fixture;
assert.equal(configHelper.getFont().fontSize, 8, 'The minimum terminal font size (with adjustment) should be used when terminal.integrated.fontSize less than it'); assert.equal(configHelper.getFont().fontSize, 8, 'The minimum terminal font size (with adjustment) should be used when terminal.integrated.fontSize less than it');
configHelper = new TerminalConfigHelper(LinuxDistro.Unknown, configurationService, null!, null!, null!); configHelper = new TerminalConfigHelper(LinuxDistro.Unknown, configurationService, null!, null!, null!, null!, null!, null!);
configHelper.panelContainer = fixture; configHelper.panelContainer = fixture;
assert.equal(configHelper.getFont().fontSize, 6, 'The minimum terminal font size should be used when terminal.integrated.fontSize less than it'); assert.equal(configHelper.getFont().fontSize, 6, 'The minimum terminal font size should be used when terminal.integrated.fontSize less than it');
...@@ -95,7 +95,7 @@ suite('Workbench - TerminalConfigHelper', () => { ...@@ -95,7 +95,7 @@ suite('Workbench - TerminalConfigHelper', () => {
fontSize: 1500 fontSize: 1500
} }
}); });
configHelper = new TerminalConfigHelper(LinuxDistro.Unknown, configurationService, null!, null!, null!); configHelper = new TerminalConfigHelper(LinuxDistro.Unknown, configurationService, null!, null!, null!, null!, null!, null!);
configHelper.panelContainer = fixture; configHelper.panelContainer = fixture;
assert.equal(configHelper.getFont().fontSize, 25, 'The maximum terminal font size should be used when terminal.integrated.fontSize more than it'); assert.equal(configHelper.getFont().fontSize, 25, 'The maximum terminal font size should be used when terminal.integrated.fontSize more than it');
...@@ -108,11 +108,11 @@ suite('Workbench - TerminalConfigHelper', () => { ...@@ -108,11 +108,11 @@ suite('Workbench - TerminalConfigHelper', () => {
fontSize: null fontSize: null
} }
}); });
configHelper = new TerminalConfigHelper(LinuxDistro.Ubuntu, configurationService, null!, null!, null!); configHelper = new TerminalConfigHelper(LinuxDistro.Ubuntu, configurationService, null!, null!, null!, null!, null!, null!);
configHelper.panelContainer = fixture; configHelper.panelContainer = fixture;
assert.equal(configHelper.getFont().fontSize, EDITOR_FONT_DEFAULTS.fontSize + 2, 'The default editor font size (with adjustment) should be used when terminal.integrated.fontSize is not set'); assert.equal(configHelper.getFont().fontSize, EDITOR_FONT_DEFAULTS.fontSize + 2, 'The default editor font size (with adjustment) should be used when terminal.integrated.fontSize is not set');
configHelper = new TerminalConfigHelper(LinuxDistro.Unknown, configurationService, null!, null!, null!); configHelper = new TerminalConfigHelper(LinuxDistro.Unknown, configurationService, null!, null!, null!, null!, null!, null!);
configHelper.panelContainer = fixture; configHelper.panelContainer = fixture;
assert.equal(configHelper.getFont().fontSize, EDITOR_FONT_DEFAULTS.fontSize, 'The default editor font size should be used when terminal.integrated.fontSize is not set'); assert.equal(configHelper.getFont().fontSize, EDITOR_FONT_DEFAULTS.fontSize, 'The default editor font size should be used when terminal.integrated.fontSize is not set');
}); });
...@@ -130,7 +130,7 @@ suite('Workbench - TerminalConfigHelper', () => { ...@@ -130,7 +130,7 @@ suite('Workbench - TerminalConfigHelper', () => {
lineHeight: 2 lineHeight: 2
} }
}); });
let configHelper = new TerminalConfigHelper(LinuxDistro.Unknown, configurationService, null!, null!, null!); let configHelper = new TerminalConfigHelper(LinuxDistro.Unknown, configurationService, null!, null!, null!, null!, null!, null!);
configHelper.panelContainer = fixture; configHelper.panelContainer = fixture;
assert.equal(configHelper.getFont().lineHeight, 2, 'terminal.integrated.lineHeight should be selected over editor.lineHeight'); assert.equal(configHelper.getFont().lineHeight, 2, 'terminal.integrated.lineHeight should be selected over editor.lineHeight');
...@@ -144,7 +144,7 @@ suite('Workbench - TerminalConfigHelper', () => { ...@@ -144,7 +144,7 @@ suite('Workbench - TerminalConfigHelper', () => {
lineHeight: 0 lineHeight: 0
} }
}); });
configHelper = new TerminalConfigHelper(LinuxDistro.Unknown, configurationService, null!, null!, null!); configHelper = new TerminalConfigHelper(LinuxDistro.Unknown, configurationService, null!, null!, null!, null!, null!, null!);
configHelper.panelContainer = fixture; configHelper.panelContainer = fixture;
assert.equal(configHelper.getFont().lineHeight, 1, 'editor.lineHeight should be 1 when terminal.integrated.lineHeight not set'); assert.equal(configHelper.getFont().lineHeight, 1, 'editor.lineHeight should be 1 when terminal.integrated.lineHeight not set');
}); });
...@@ -157,7 +157,7 @@ suite('Workbench - TerminalConfigHelper', () => { ...@@ -157,7 +157,7 @@ suite('Workbench - TerminalConfigHelper', () => {
} }
}); });
let configHelper = new TerminalConfigHelper(LinuxDistro.Unknown, configurationService, null!, null!, null!); let configHelper = new TerminalConfigHelper(LinuxDistro.Unknown, configurationService, null!, null!, null!, null!, null!, null!);
configHelper.panelContainer = fixture; configHelper.panelContainer = fixture;
assert.equal(configHelper.configFontIsMonospace(), true, 'monospace is monospaced'); assert.equal(configHelper.configFontIsMonospace(), true, 'monospace is monospaced');
}); });
...@@ -169,7 +169,7 @@ suite('Workbench - TerminalConfigHelper', () => { ...@@ -169,7 +169,7 @@ suite('Workbench - TerminalConfigHelper', () => {
fontFamily: 'sans-serif' fontFamily: 'sans-serif'
} }
}); });
let configHelper = new TerminalConfigHelper(LinuxDistro.Unknown, configurationService, null!, null!, null!); let configHelper = new TerminalConfigHelper(LinuxDistro.Unknown, configurationService, null!, null!, null!, null!, null!, null!);
configHelper.panelContainer = fixture; configHelper.panelContainer = fixture;
assert.equal(configHelper.configFontIsMonospace(), false, 'sans-serif is not monospaced'); assert.equal(configHelper.configFontIsMonospace(), false, 'sans-serif is not monospaced');
}); });
...@@ -181,7 +181,7 @@ suite('Workbench - TerminalConfigHelper', () => { ...@@ -181,7 +181,7 @@ suite('Workbench - TerminalConfigHelper', () => {
fontFamily: 'serif' fontFamily: 'serif'
} }
}); });
let configHelper = new TerminalConfigHelper(LinuxDistro.Unknown, configurationService, null!, null!, null!); let configHelper = new TerminalConfigHelper(LinuxDistro.Unknown, configurationService, null!, null!, null!, null!, null!, null!);
configHelper.panelContainer = fixture; configHelper.panelContainer = fixture;
assert.equal(configHelper.configFontIsMonospace(), false, 'serif is not monospaced'); assert.equal(configHelper.configFontIsMonospace(), false, 'serif is not monospaced');
}); });
...@@ -197,7 +197,7 @@ suite('Workbench - TerminalConfigHelper', () => { ...@@ -197,7 +197,7 @@ suite('Workbench - TerminalConfigHelper', () => {
} }
}); });
let configHelper = new TerminalConfigHelper(LinuxDistro.Unknown, configurationService, null!, null!, null!); let configHelper = new TerminalConfigHelper(LinuxDistro.Unknown, configurationService, null!, null!, null!, null!, null!, null!);
configHelper.panelContainer = fixture; configHelper.panelContainer = fixture;
assert.equal(configHelper.configFontIsMonospace(), true, 'monospace is monospaced'); assert.equal(configHelper.configFontIsMonospace(), true, 'monospace is monospaced');
}); });
...@@ -213,7 +213,7 @@ suite('Workbench - TerminalConfigHelper', () => { ...@@ -213,7 +213,7 @@ suite('Workbench - TerminalConfigHelper', () => {
} }
}); });
let configHelper = new TerminalConfigHelper(LinuxDistro.Unknown, configurationService, null!, null!, null!); let configHelper = new TerminalConfigHelper(LinuxDistro.Unknown, configurationService, null!, null!, null!, null!, null!, null!);
configHelper.panelContainer = fixture; configHelper.panelContainer = fixture;
assert.equal(configHelper.configFontIsMonospace(), false, 'sans-serif is not monospaced'); assert.equal(configHelper.configFontIsMonospace(), false, 'sans-serif is not monospaced');
}); });
...@@ -229,7 +229,7 @@ suite('Workbench - TerminalConfigHelper', () => { ...@@ -229,7 +229,7 @@ suite('Workbench - TerminalConfigHelper', () => {
} }
}); });
let configHelper = new TerminalConfigHelper(LinuxDistro.Unknown, configurationService, null!, null!, null!); let configHelper = new TerminalConfigHelper(LinuxDistro.Unknown, configurationService, null!, null!, null!, null!, null!, null!);
configHelper.panelContainer = fixture; configHelper.panelContainer = fixture;
assert.equal(configHelper.configFontIsMonospace(), false, 'serif is not monospaced'); assert.equal(configHelper.configFontIsMonospace(), false, 'serif is not monospaced');
}); });
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册