Skip to content

Commit 512e471

Browse files
author
Kartik Raj
authored
Use status bar to indicate whether selected Python interpreter is invalid (#19510)
1 parent 3e7b45d commit 512e471

File tree

4 files changed

+24
-2
lines changed

4 files changed

+24
-2
lines changed

src/client/interpreter/display/index.ts

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
import { inject, injectable } from 'inversify';
2-
import { Disposable, LanguageStatusItem, LanguageStatusSeverity, StatusBarAlignment, StatusBarItem, Uri } from 'vscode';
2+
import {
3+
Disposable,
4+
LanguageStatusItem,
5+
LanguageStatusSeverity,
6+
StatusBarAlignment,
7+
StatusBarItem,
8+
ThemeColor,
9+
Uri,
10+
} from 'vscode';
311
import { IExtensionSingleActivationService } from '../../activation/types';
412
import { IApplicationShell, IWorkspaceService } from '../../common/application/types';
513
import { Commands, PYTHON_LANGUAGE } from '../../common/constants';
@@ -133,6 +141,7 @@ export class InterpreterDisplay implements IInterpreterDisplay, IExtensionSingle
133141
} else {
134142
this.statusBar.tooltip = '';
135143
this.statusBar.color = '';
144+
this.statusBar.backgroundColor = new ThemeColor('statusBarItem.warningBackground');
136145
this.statusBar.text = `$(alert) ${InterpreterQuickPickList.browsePath.openButtonLabel}`;
137146
this.currentlySelectedInterpreterDisplay = undefined;
138147
}
@@ -153,8 +162,10 @@ export class InterpreterDisplay implements IInterpreterDisplay, IExtensionSingle
153162
text = text.startsWith('Python') ? text.substring('Python'.length).trim() : text;
154163
this.languageStatus.text = text;
155164
this.currentlySelectedInterpreterDisplay = interpreter.detailedDisplayName;
165+
this.languageStatus.severity = LanguageStatusSeverity.Information;
156166
} else {
157-
this.languageStatus.text = '$(alert) No Interpreter Selected';
167+
this.languageStatus.severity = LanguageStatusSeverity.Warning;
168+
this.languageStatus.text = `$(alert) ${InterpreterQuickPickList.browsePath.openButtonLabel}`;
158169
this.languageStatus.detail = undefined;
159170
this.currentlySelectedInterpreterDisplay = undefined;
160171
}

src/test/interpreters/display.unit.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import { InterpreterDisplay } from '../../client/interpreter/display';
3131
import { IServiceContainer } from '../../client/ioc/types';
3232
import * as logging from '../../client/logging';
3333
import { EnvironmentType, PythonEnvironment } from '../../client/pythonEnvironments/info';
34+
import { ThemeColor } from '../mocks/vsc';
3435

3536
const info: PythonEnvironment = {
3637
architecture: Architecture.Unknown,
@@ -274,6 +275,11 @@ suite('Interpreters Display', () => {
274275
TypeMoq.Times.once(),
275276
);
276277
} else {
278+
statusBar.verify(
279+
(s) =>
280+
(s.backgroundColor = TypeMoq.It.isValue(new ThemeColor('statusBarItem.warningBackground'))),
281+
TypeMoq.Times.once(),
282+
);
277283
statusBar.verify((s) => (s.color = TypeMoq.It.isValue('')), TypeMoq.Times.once());
278284
statusBar.verify(
279285
(s) =>

src/test/mocks/vsc/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@ export function escapeCodicons(text: string): string {
1717
return text.replace(escapeCodiconsRegex, (match, escaped) => (escaped ? match : `\\${match}`));
1818
}
1919

20+
export class ThemeColor {
21+
constructor(public readonly id: string) {}
22+
}
23+
2024
export enum ExtensionKind {
2125
/**
2226
* Extension runs where the UI runs.

src/test/vscode-mock.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ export function initialize() {
6262
};
6363
}
6464

65+
mockedVSCode.ThemeColor = vscodeMocks.ThemeColor;
6566
mockedVSCode.MarkdownString = vscodeMocks.MarkdownString;
6667
mockedVSCode.Hover = vscodeMocks.Hover;
6768
mockedVSCode.Disposable = vscodeMocks.Disposable as any;

0 commit comments

Comments
 (0)