11import { Disposable , l10n , Uri } from 'vscode' ;
22import { EnvironmentManagers , PythonProjectManager } from '../../internal.api' ;
33import { createDeferred , Deferred } from '../../common/utils/deferred' ;
4- import { allExtensions } from '../../common/extension.apis' ;
4+ import { allExtensions , getExtension } from '../../common/extension.apis' ;
55import { traceError , traceInfo } from '../../common/logging' ;
66import { showErrorMessage } from '../../common/window.apis' ;
77import { getDefaultEnvManagerSetting , getDefaultPkgManagerSetting } from '../settings/settingHelpers' ;
@@ -54,11 +54,25 @@ class ManagerReadyImpl implements ManagerReady {
5454
5555 private checkExtension ( managerId : string ) {
5656 const installed = allExtensions ( ) . some ( ( ext ) => managerId . startsWith ( `${ ext . id } :` ) ) ;
57- if ( ! installed && ! this . checked . has ( managerId ) ) {
58- this . checked . add ( managerId ) ;
59- const extId = getExtensionId ( managerId ) ;
57+ if ( this . checked . has ( managerId ) ) {
58+ return ;
59+ }
60+ this . checked . add ( managerId ) ;
61+ const extId = getExtensionId ( managerId ) ;
62+ if ( extId ) {
6063 setImmediate ( async ( ) => {
61- if ( extId ) {
64+ if ( installed ) {
65+ const ext = getExtension ( extId ) ;
66+ if ( ext && ! ext . isActive ) {
67+ traceInfo ( `Extension for manager ${ extId } is not active: Activating...` ) ;
68+ try {
69+ await ext . activate ( ) ;
70+ traceInfo ( `Extension for manager ${ extId } is now active.` ) ;
71+ } catch ( err ) {
72+ traceError ( `Failed to activate extension ${ extId } , required for: ${ managerId } ` , err ) ;
73+ }
74+ }
75+ } else {
6276 traceError ( `Extension for manager ${ extId } is not installed.` ) ;
6377 const result = await showErrorMessage (
6478 l10n . t ( `Extension for {0} is not installed or enabled for this workspace.` , extId ) ,
@@ -73,12 +87,10 @@ class ManagerReadyImpl implements ManagerReady {
7387 traceError ( `Failed to install extension: ${ extId } ` , err ) ;
7488 }
7589 }
76- } else {
77- showErrorMessage (
78- l10n . t ( `Extension for {0} is not installed or enabled for this workspace.` , managerId ) ,
79- ) ;
8090 }
8191 } ) ;
92+ } else {
93+ showErrorMessage ( l10n . t ( `Extension for {0} is not installed or enabled for this workspace.` , managerId ) ) ;
8294 }
8395 }
8496
0 commit comments