Skip to content

Commit 5ff56fc

Browse files
committed
fix: improve extension activation for required env managers
1 parent 9159467 commit 5ff56fc

File tree

1 file changed

+21
-9
lines changed

1 file changed

+21
-9
lines changed

src/features/common/managerReady.ts

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { Disposable, l10n, Uri } from 'vscode';
22
import { EnvironmentManagers, PythonProjectManager } from '../../internal.api';
33
import { createDeferred, Deferred } from '../../common/utils/deferred';
4-
import { allExtensions } from '../../common/extension.apis';
4+
import { allExtensions, getExtension } from '../../common/extension.apis';
55
import { traceError, traceInfo } from '../../common/logging';
66
import { showErrorMessage } from '../../common/window.apis';
77
import { 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

Comments
 (0)