Skip to content

Commit 5b4c450

Browse files
authored
Merge pull request #10 from git-time-metric/master
Fix status bar from being overwritten
2 parents e7ab088 + 5b95f45 commit 5b4c450

1 file changed

Lines changed: 26 additions & 1 deletion

File tree

src/extension.ts

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,14 @@ export function activate(context: vscode.ExtensionContext) {
3939
let lastSavedFileName: string;
4040
const MIN_UPDATE_FREQUENCE_MS = 30000; // 30 seconds
4141

42+
let gtmStatusBar = new GTMStatusBar()
43+
4244
function handleUpdateEvent(fileName: string){
4345
const now = new Date();
4446
// if a new file is being saved OR it have been at least MIN_UPDATE_FREQUENCE_MS, record it
4547
if (fileName !== lastSavedFileName || (now.getTime() - lastUpdated.getTime()) >= MIN_UPDATE_FREQUENCE_MS) {
4648
run_cmd('gtm', ['record', '--status', lastSavedFileName])
47-
.then((res: Result) => vscode.window.setStatusBarMessage(res.output));
49+
.then((res: Result) => gtmStatusBar.updateStatus(res.output));
4850
lastSavedFileName = fileName;
4951
lastUpdated = now;
5052
}
@@ -60,4 +62,27 @@ export function activate(context: vscode.ExtensionContext) {
6062
vscode.window.onDidChangeActiveTextEditor((e:vscode.TextEditor) => handleUpdateEvent(e.document.fileName), this, subscriptions);
6163
}
6264

65+
class GTMStatusBar {
66+
private statusBarItem: vscode.StatusBarItem;
67+
68+
public updateStatus(statusText: string) {
69+
70+
// Create as needed
71+
if (!this.statusBarItem) {
72+
this.statusBarItem = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Left);
73+
}
74+
75+
// Get the current text editor
76+
let editor = vscode.window.activeTextEditor;
77+
if (!editor) {
78+
this.statusBarItem.hide();
79+
return;
80+
}
81+
82+
// Update the status bar
83+
this.statusBarItem.text = statusText;
84+
this.statusBarItem.show();
85+
}
86+
}
87+
6388
// always active, so no need to deactivate

0 commit comments

Comments
 (0)