diff --git a/src/vs/platform/extensionManagement/common/extensionEnablementService.ts b/src/vs/platform/extensionManagement/common/extensionEnablementService.ts index a8fe676d7cf19a73cecffaa35c697328785fb9d8..b67a779c2858a39ad0845c84b3de532421440b86 100644 --- a/src/vs/platform/extensionManagement/common/extensionEnablementService.ts +++ b/src/vs/platform/extensionManagement/common/extensionEnablementService.ts @@ -28,6 +28,7 @@ export class GlobalExtensionEnablementService extends Disposable implements IGlo async enableExtension(extension: IExtensionIdentifier): Promise { if (this._removeFromDisabledExtensions(extension)) { + this._onDidChangeEnablement.fire([extension]); return true; } return false; @@ -35,6 +36,7 @@ export class GlobalExtensionEnablementService extends Disposable implements IGlo async disableExtension(extension: IExtensionIdentifier): Promise { if (this._addToDisabledExtensions(extension)) { + this._onDidChangeEnablement.fire([extension]); return true; } return false; diff --git a/src/vs/platform/userDataSync/common/extensionsSync.ts b/src/vs/platform/userDataSync/common/extensionsSync.ts index 7a17d8197c7de036de574d6e4c83af77343a7498..6351fb62a89ce9aaaa9bb1abadae68f395a6f18d 100644 --- a/src/vs/platform/userDataSync/common/extensionsSync.ts +++ b/src/vs/platform/userDataSync/common/extensionsSync.ts @@ -44,9 +44,10 @@ export class ExtensionsSynchroniser extends AbstractSynchroniser implements IUse super(SyncSource.Extensions, fileService, environmentService, userDataSyncStoreService); this._register( Event.debounce( - Event.any( + Event.any( Event.filter(this.extensionManagementService.onDidInstallExtension, (e => !!e.gallery)), - Event.filter(this.extensionManagementService.onDidUninstallExtension, (e => !e.error))), + Event.filter(this.extensionManagementService.onDidUninstallExtension, (e => !e.error)), + this.extensionEnablementService.onDidChangeEnablement), () => undefined, 500)(() => this._onDidChangeLocal.fire())); } @@ -241,15 +242,17 @@ export class ExtensionsSynchroniser extends AbstractSynchroniser implements IUse await Promise.all([...added, ...updated].map(async e => { const extension = await this.extensionGalleryService.getCompatibleExtension(e.identifier, e.version); if (extension) { - this.logService.info('Extensions: Installing local extension.', e.identifier.id, extension.version); try { if (e.enabled) { + this.logService.info('Extensions: Enabling extension.', e.identifier.id, extension.version); await this.extensionEnablementService.enableExtension(extension.identifier); } else { + this.logService.info('Extensions: Disabling extension.', e.identifier.id, extension.version); await this.extensionEnablementService.disableExtension(extension.identifier); } // Install only if the extension does not exist if (!installedExtensions.some(installed => areSameExtensions(installed.identifier, extension.identifier) && installed.manifest.version === extension.version)) { + this.logService.info('Extensions: Installing extension.', e.identifier.id, extension.version); await this.extensionManagementService.installFromGallery(extension); removeFromSkipped.push(extension.identifier); }