@@ -10,6 +10,7 @@ import { tunnelPorts } from './ports';
10
10
import { GitpodPortViewProvider } from './portViewProvider' ;
11
11
import { initializeRemoteExtensions , installInitialExtensions , ISyncExtension } from './remoteExtensionInit' ;
12
12
13
+ let initialExtensionsInstallPromise : Promise < void > ;
13
14
let gitpodContext : GitpodExtensionContext | undefined ;
14
15
export async function activate ( context : vscode . ExtensionContext ) {
15
16
gitpodContext = await setupGitpodContext ( context ) ;
@@ -19,7 +20,7 @@ export async function activate(context: vscode.ExtensionContext) {
19
20
20
21
registerCommands ( gitpodContext ) ;
21
22
registerTasks ( gitpodContext ) ;
22
- installInitialExtensions ( gitpodContext ) ;
23
+ initialExtensionsInstallPromise = installInitialExtensions ( gitpodContext ) ;
23
24
24
25
const portViewProvider = new GitpodPortViewProvider ( gitpodContext ) ;
25
26
context . subscriptions . push ( vscode . window . registerWebviewViewProvider ( GitpodPortViewProvider . viewType , portViewProvider , { webviewOptions : { retainContextWhenHidden : true } } ) ) ;
@@ -86,5 +87,12 @@ function registerCommands(context: GitpodExtensionContext) {
86
87
} ) ) ;
87
88
88
89
// Initialize remote extensions
89
- context . subscriptions . push ( vscode . commands . registerCommand ( '__gitpod.initializeRemoteExtensions' , ( extensions : ISyncExtension [ ] ) => initializeRemoteExtensions ( extensions , gitpodContext ! ) ) ) ;
90
+ context . subscriptions . push ( vscode . commands . registerCommand ( '__gitpod.initializeRemoteExtensions' , async ( extensions : ISyncExtension [ ] ) => {
91
+ try {
92
+ // Await for initial extension instalation so we don't have too many extension installations tasks running
93
+ await initialExtensionsInstallPromise ;
94
+ } catch {
95
+ }
96
+ return initializeRemoteExtensions ( extensions , gitpodContext ! ) ;
97
+ } ) ) ;
90
98
}
0 commit comments