Skip to content

Commit c2b029d

Browse files
authored
Added language status (#3507)
1 parent ef1fa15 commit c2b029d

6 files changed

Lines changed: 49 additions & 9 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ All notable changes to the "prettier-vscode" extension will be documented in thi
77
## [Unreleased]
88

99
- [BREAKING CHANGE] Prevent `.editorconfig` from satisfying the `requireConfig` setting
10+
- Added Language Status Item for Prettier
1011
- Fix issue where formatting multiple files in a workspace with multiple instances of Prettier could result in files being overwritten with the contents of other files (#3423, #3040)
1112
- Add support for `experimentalTernaries` option
1213

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
"url": "https://github.com/prettier/prettier-vscode/issues"
2323
},
2424
"engines": {
25-
"vscode": "^1.60.0"
25+
"vscode": "^1.80.0"
2626
},
2727
"keywords": [
2828
"multi-root ready",
@@ -100,7 +100,7 @@
100100
"@types/semver": "^7.5.8",
101101
"@types/sinon": "^17.0.3",
102102
"@types/tmp": "^0.2.6",
103-
"@types/vscode": "^1.60.0",
103+
"@types/vscode": "^1.80.0",
104104
"@typescript-eslint/eslint-plugin": "^5.45.0",
105105
"@typescript-eslint/parser": "^5.45.0",
106106
"@vscode/test-electron": "^2.4.1",

src/PrettierEditService.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,10 @@ export default class PrettierEditService implements Disposable {
203203
workspaceFolder.uri
204204
);
205205

206+
this.statusBar.updateConfig({
207+
selector: selectors.languageSelector,
208+
});
209+
206210
if (!isRegistered) {
207211
this.registerDocumentFormatEditorProviders(selectors);
208212
this.registeredWorkspaces.add(workspaceFolder.uri.fsPath);

src/StatusBar.ts

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,14 @@
1-
import { StatusBarAlignment, StatusBarItem, window, ThemeColor } from "vscode";
1+
import {
2+
Disposable,
3+
DocumentSelector,
4+
languages,
5+
LanguageStatusItem,
6+
LanguageStatusSeverity,
7+
StatusBarAlignment,
8+
StatusBarItem,
9+
ThemeColor,
10+
window,
11+
} from "vscode";
212

313
export enum FormatterStatus {
414
Ready = "check-all",
@@ -9,20 +19,36 @@ export enum FormatterStatus {
919
Disabled = "circle-slash",
1020
}
1121

12-
export class StatusBar {
22+
export class StatusBar implements Disposable {
1323
private statusBarItem: StatusBarItem;
24+
private languageStatusItem: LanguageStatusItem;
1425
constructor() {
15-
// Setup the statusBarItem
1626
this.statusBarItem = window.createStatusBarItem(
1727
"prettier.status",
1828
StatusBarAlignment.Right,
1929
-1
2030
);
31+
this.languageStatusItem = languages.createLanguageStatusItem(
32+
"prettier.status",
33+
[]
34+
);
35+
2136
this.statusBarItem.name = "Prettier";
2237
this.statusBarItem.text = "Prettier";
2338
this.statusBarItem.command = "prettier.openOutput";
2439
this.update(FormatterStatus.Ready);
2540
this.statusBarItem.show();
41+
42+
this.languageStatusItem.name = "Prettier";
43+
this.languageStatusItem.text = "Prettier";
44+
this.languageStatusItem.command = {
45+
title: "View Logs",
46+
command: "prettier.openOutput",
47+
};
48+
}
49+
50+
public updateConfig({ selector }: { selector: DocumentSelector }) {
51+
this.languageStatusItem.selector = selector;
2652
}
2753

2854
/**
@@ -38,16 +64,19 @@ export class StatusBar {
3864
this.statusBarItem.backgroundColor = new ThemeColor(
3965
"statusBarItem.warningBackground"
4066
);
67+
this.languageStatusItem.severity = LanguageStatusSeverity.Warning;
4168
break;
4269
case FormatterStatus.Error:
4370
this.statusBarItem.backgroundColor = new ThemeColor(
4471
"statusBarItem.errorBackground"
4572
);
73+
this.languageStatusItem.severity = LanguageStatusSeverity.Error;
4674
break;
4775
default:
4876
this.statusBarItem.backgroundColor = new ThemeColor(
4977
"statusBarItem.fourgroundBackground"
5078
);
79+
this.languageStatusItem.severity = LanguageStatusSeverity.Information;
5180
break;
5281
}
5382
this.statusBarItem.show();
@@ -56,4 +85,9 @@ export class StatusBar {
5685
public hide() {
5786
this.statusBarItem.hide();
5887
}
88+
89+
public dispose(): void {
90+
this.languageStatusItem.dispose();
91+
this.statusBarItem.dispose();
92+
}
5993
}

src/extension.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ export function activate(context: ExtensionContext) {
7070
);
7171

7272
context.subscriptions.push(
73+
statusBar,
7374
editService,
7475
createConfigFileCommand,
7576
openOutputCommand,

yarn.lock

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -307,10 +307,10 @@
307307
resolved "https://registry.yarnpkg.com/@types/tmp/-/tmp-0.2.6.tgz#d785ee90c52d7cc020e249c948c36f7b32d1e217"
308308
integrity sha512-chhaNf2oKHlRkDGt+tiKE2Z5aJ6qalm7Z9rlLdBwmOiAAf09YQvvoLXjWK4HWPF1xU/fqvMgfNfpVoBscA/tKA==
309309

310-
"@types/vscode@^1.60.0":
311-
version "1.69.0"
312-
resolved "https://registry.yarnpkg.com/@types/vscode/-/vscode-1.69.0.tgz#a472011af392fbcf82cbb82f60b4c239c21b921c"
313-
integrity sha512-RlzDAnGqUoo9wS6d4tthNyAdZLxOIddLiX3djMoWk29jFfSA1yJbIwr0epBYqqYarWB6s2Z+4VaZCQ80Jaa3kA==
310+
"@types/vscode@^1.80.0":
311+
version "1.92.0"
312+
resolved "https://registry.yarnpkg.com/@types/vscode/-/vscode-1.92.0.tgz#b4d6bc180e7206defe643a1a5f38a1367947d418"
313+
integrity sha512-DcZoCj17RXlzB4XJ7IfKdPTcTGDLYvTOcTNkvtjXWF+K2TlKzHHkBEXNWQRpBIXixNEUgx39cQeTFunY0E2msw==
314314

315315
"@typescript-eslint/eslint-plugin@^5.45.0":
316316
version "5.45.0"

0 commit comments

Comments
 (0)