@@ -54,7 +54,7 @@ import { alert } from 'vs/base/browser/ui/aria/aria';
54
54
import { coalesce } from 'vs/base/common/arrays' ;
55
55
import { IWorkbenchThemeService , COLOR_THEME_SETTING , ICON_THEME_SETTING , IFileIconTheme , IColorTheme } from 'vs/workbench/services/themes/common/workbenchThemeService' ;
56
56
import { ILabelService } from 'vs/platform/label/common/label' ;
57
- import { prefersExecuteOnUI } from 'vs/workbench/services/extensions/common/extensionsUtil' ;
57
+ import { prefersExecuteOnUI , prefersExecuteOnWorkspace } from 'vs/workbench/services/extensions/common/extensionsUtil' ;
58
58
import { IPreferencesService } from 'vs/workbench/services/preferences/common/preferences' ;
59
59
import { ITextFileService } from 'vs/workbench/services/textfile/common/textfiles' ;
60
60
import { IProductService } from 'vs/platform/product/common/productService' ;
@@ -1195,7 +1195,9 @@ export class ReloadAction extends ExtensionAction {
1195
1195
@IHostService private readonly hostService : IHostService ,
1196
1196
@IExtensionService private readonly extensionService : IExtensionService ,
1197
1197
@IExtensionEnablementService private readonly extensionEnablementService : IExtensionEnablementService ,
1198
- @IExtensionManagementServerService private readonly extensionManagementServerService : IExtensionManagementServerService
1198
+ @IExtensionManagementServerService private readonly extensionManagementServerService : IExtensionManagementServerService ,
1199
+ @IProductService private readonly productService : IProductService ,
1200
+ @IConfigurationService private readonly configurationService : IConfigurationService ,
1199
1201
) {
1200
1202
super ( 'extensions.reload' , localize ( 'reloadAction' , "Reload" ) , ReloadAction . DisabledClass , false ) ;
1201
1203
this . _register ( this . extensionService . onDidChangeExtensions ( this . updateRunningExtensions , this ) ) ;
@@ -1246,19 +1248,37 @@ export class ReloadAction extends ExtensionAction {
1246
1248
// Extension is running
1247
1249
if ( runningExtension ) {
1248
1250
if ( isEnabled ) {
1249
- if ( ! this . extensionService . canAddExtension ( toExtensionDescription ( this . extension . local ) ) ) {
1250
- if ( isSameExtensionRunning ) {
1251
- if ( this . extension . version !== runningExtension . version ) {
1251
+ // No Reload is required if extension can run without reload
1252
+ if ( this . extensionService . canAddExtension ( toExtensionDescription ( this . extension . local ) ) ) {
1253
+ return ;
1254
+ }
1255
+ if ( isSameExtensionRunning ) {
1256
+ // Different version of same extension is running. Requires reload to run the current version
1257
+ if ( this . extension . version !== runningExtension . version ) {
1258
+ this . enabled = true ;
1259
+ this . label = localize ( 'reloadRequired' , "Reload Required" ) ;
1260
+ this . tooltip = localize ( 'postUpdateTooltip' , "Please reload Visual Studio Code to enable the updated extension." ) ;
1261
+ }
1262
+ } else {
1263
+ const runningExtensionServer = this . extensionManagementServerService . getExtensionManagementServer ( runningExtension . extensionLocation ) ;
1264
+ if ( this . extension . server === this . extensionManagementServerService . localExtensionManagementServer && runningExtensionServer === this . extensionManagementServerService . remoteExtensionManagementServer ) {
1265
+ // This extension prefers to run on UI/Local side but is running in remote
1266
+ if ( prefersExecuteOnUI ( this . extension . local ! . manifest , this . productService , this . configurationService ) ) {
1252
1267
this . enabled = true ;
1253
1268
this . label = localize ( 'reloadRequired' , "Reload Required" ) ;
1254
- this . tooltip = localize ( 'postUpdateTooltip' , "Please reload Visual Studio Code to enable the updated extension." ) ;
1269
+ this . tooltip = localize ( 'postEnableTooltip' , "Please reload Visual Studio Code to enable this extension." ) ;
1270
+ }
1271
+ }
1272
+ if ( this . extension . server === this . extensionManagementServerService . remoteExtensionManagementServer && runningExtensionServer === this . extensionManagementServerService . localExtensionManagementServer ) {
1273
+ // This extension prefers to run on Workspace/Remote side but is running in local
1274
+ if ( prefersExecuteOnWorkspace ( this . extension . local ! . manifest , this . productService , this . configurationService ) ) {
1275
+ this . enabled = true ;
1276
+ this . label = localize ( 'reloadRequired' , "Reload Required" ) ;
1277
+ this . tooltip = localize ( 'postEnableTooltip' , "Please reload Visual Studio Code to enable this extension." ) ;
1255
1278
}
1256
- } else {
1257
- this . enabled = true ;
1258
- this . label = localize ( 'reloadRequired' , "Reload Required" ) ;
1259
- this . tooltip = localize ( 'postEnableTooltip' , "Please reload Visual Studio Code to enable this extension." ) ;
1260
1279
}
1261
1280
}
1281
+ return ;
1262
1282
} else {
1263
1283
if ( isSameExtensionRunning ) {
1264
1284
this . enabled = true ;
@@ -2632,7 +2652,9 @@ export class SystemDisabledWarningAction extends ExtensionAction {
2632
2652
@IExtensionManagementServerService private readonly extensionManagementServerService : IExtensionManagementServerService ,
2633
2653
@ILabelService private readonly labelService : ILabelService ,
2634
2654
@IExtensionsWorkbenchService private readonly extensionsWorkbenchService : IExtensionsWorkbenchService ,
2635
- @IExtensionService private readonly extensionService : IExtensionService
2655
+ @IExtensionService private readonly extensionService : IExtensionService ,
2656
+ @IProductService private readonly productService : IProductService ,
2657
+ @IConfigurationService private readonly configurationService : IConfigurationService ,
2636
2658
) {
2637
2659
super ( 'extensions.install' , '' , `${ SystemDisabledWarningAction . CLASS } hide` , false ) ;
2638
2660
this . _register ( this . labelService . onDidChangeFormatters ( ( ) => this . update ( ) , this ) ) ;
@@ -2674,18 +2696,22 @@ export class SystemDisabledWarningAction extends ExtensionAction {
2674
2696
this . tooltip = localize ( 'Install in other server to enable' , "Install the extension on '{0}' to enable." , server . label ) ;
2675
2697
return ;
2676
2698
}
2677
- const runningExtension = this . _runningExtensions . filter ( e => areSameExtensions ( { id : e . identifier . value , uuid : e . uuid } , this . extension ! . identifier ) ) [ 0 ] ;
2678
- const runningExtensionServer = runningExtension ? this . extensionManagementServerService . getExtensionManagementServer ( runningExtension . extensionLocation ) : null ;
2679
- if ( this . extension . server === this . extensionManagementServerService . localExtensionManagementServer && runningExtensionServer === this . extensionManagementServerService . remoteExtensionManagementServer ) {
2699
+ }
2700
+ const runningExtension = this . _runningExtensions . filter ( e => areSameExtensions ( { id : e . identifier . value , uuid : e . uuid } , this . extension ! . identifier ) ) [ 0 ] ;
2701
+ const runningExtensionServer = runningExtension ? this . extensionManagementServerService . getExtensionManagementServer ( runningExtension . extensionLocation ) : null ;
2702
+ if ( this . extension . server === this . extensionManagementServerService . localExtensionManagementServer && runningExtensionServer === this . extensionManagementServerService . remoteExtensionManagementServer ) {
2703
+ if ( prefersExecuteOnWorkspace ( this . extension . local ! . manifest , this . productService , this . configurationService ) ) {
2680
2704
this . class = `${ SystemDisabledWarningAction . INFO_CLASS } ` ;
2681
2705
this . tooltip = localize ( 'disabled locally' , "Extension is enabled on '{0}' and disabled locally." , this . extensionManagementServerService . remoteExtensionManagementServer . label ) ;
2682
- return ;
2683
2706
}
2684
- if ( this . extension . server === this . extensionManagementServerService . remoteExtensionManagementServer && runningExtensionServer === this . extensionManagementServerService . localExtensionManagementServer ) {
2707
+ return ;
2708
+ }
2709
+ if ( this . extension . server === this . extensionManagementServerService . remoteExtensionManagementServer && runningExtensionServer === this . extensionManagementServerService . localExtensionManagementServer ) {
2710
+ if ( prefersExecuteOnUI ( this . extension . local ! . manifest , this . productService , this . configurationService ) ) {
2685
2711
this . class = `${ SystemDisabledWarningAction . INFO_CLASS } ` ;
2686
2712
this . tooltip = localize ( 'disabled remotely' , "Extension is enabled locally and disabled on '{0}'." , this . extensionManagementServerService . remoteExtensionManagementServer . label ) ;
2687
- return ;
2688
2713
}
2714
+ return ;
2689
2715
}
2690
2716
}
2691
2717
0 commit comments