Skip to content

Commit

Permalink
Show build/vet/lint status in Status bar. Fixes microsoft#1456.
Browse files Browse the repository at this point in the history
  • Loading branch information
cheesedosa committed Jan 24, 2018
1 parent e0e5d56 commit 2f21244
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 14 deletions.
14 changes: 9 additions & 5 deletions src/goBuild.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import os = require('os');
import { getNonVendorPackages } from './goPackages';
import { getTestFlags } from './testUtils';
import { getCurrentGoWorkspaceFromGOPATH } from './goPath';

import { diagnosticsStatusBarItem } from './goStatus';
/**
* Builds current package or workspace.
*/
Expand All @@ -25,13 +25,17 @@ export function buildCode(buildWorkspace?: boolean) {

let documentUri = editor ? editor.document.uri : null;
let goConfig = vscode.workspace.getConfiguration('go', documentUri);
outputChannel.clear();
outputChannel.show();
outputChannel.appendLine('Building in progress...');

diagnosticsStatusBarItem.show();
diagnosticsStatusBarItem.text = 'Building...';
goBuild(documentUri, goConfig, buildWorkspace)
.then(errors => handleDiagnosticErrors(editor ? editor.document : null, errors, vscode.DiagnosticSeverity.Error))
.then(errors => {
handleDiagnosticErrors(editor ? editor.document : null, errors, vscode.DiagnosticSeverity.Error);
diagnosticsStatusBarItem.hide();
})
.catch(err => {
vscode.window.showInformationMessage('Error: ' + err);
diagnosticsStatusBarItem.text = 'Build Failed';
});
}

Expand Down
15 changes: 10 additions & 5 deletions src/goLint.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import path = require('path');
import vscode = require('vscode');
import { getToolsEnvVars, resolvePath, runTool, ICheckResult, handleDiagnosticErrors, getWorkspaceFolderPath } from './util';
import { outputChannel } from './goStatus';

import { diagnosticsStatusBarItem } from './goStatus';
/**
* Runs linter in the current package or workspace.
*/
Expand All @@ -19,13 +19,18 @@ export function lintCode(lintWorkspace?: boolean) {

let documentUri = editor ? editor.document.uri : null;
let goConfig = vscode.workspace.getConfiguration('go', documentUri);
outputChannel.clear();
outputChannel.show();
outputChannel.appendLine('Linting in progress...');

diagnosticsStatusBarItem.show();
diagnosticsStatusBarItem.text = 'Linting...';

goLint(documentUri, goConfig, lintWorkspace)
.then(warnings => handleDiagnosticErrors(editor ? editor.document : null, warnings, vscode.DiagnosticSeverity.Warning))
.then(warnings => {
handleDiagnosticErrors(editor ? editor.document : null, warnings, vscode.DiagnosticSeverity.Warning);
diagnosticsStatusBarItem.hide();
})
.catch(err => {
vscode.window.showInformationMessage('Error: ' + err);
diagnosticsStatusBarItem.text = 'Linting Failed';
});
}

Expand Down
2 changes: 2 additions & 0 deletions src/goStatus.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ import vscode = require('vscode');

export let outputChannel = vscode.window.createOutputChannel('Go');

export let diagnosticsStatusBarItem = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Left);

let statusBarEntry: vscode.StatusBarItem;

export function showHideStatus() {
Expand Down
14 changes: 10 additions & 4 deletions src/goVet.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import path = require('path');
import vscode = require('vscode');
import { getToolsEnvVars, runTool, ICheckResult, handleDiagnosticErrors, getWorkspaceFolderPath } from './util';
import { outputChannel } from './goStatus';
import { diagnosticsStatusBarItem } from './goStatus';

/**
* Runs go vet in the current package or workspace.
Expand All @@ -19,13 +20,18 @@ export function vetCode(vetWorkspace?: boolean) {

let documentUri = editor ? editor.document.uri : null;
let goConfig = vscode.workspace.getConfiguration('go', documentUri);
outputChannel.clear();
outputChannel.show();
outputChannel.appendLine('Vetting in progress...');

diagnosticsStatusBarItem.show();
diagnosticsStatusBarItem.text = 'Vetting...';

goVet(documentUri, goConfig, vetWorkspace)
.then(warnings => handleDiagnosticErrors(editor ? editor.document : null, warnings, vscode.DiagnosticSeverity.Warning))
.then(warnings => {
handleDiagnosticErrors(editor ? editor.document : null, warnings, vscode.DiagnosticSeverity.Warning);
diagnosticsStatusBarItem.hide();
})
.catch(err => {
vscode.window.showInformationMessage('Error: ' + err);
diagnosticsStatusBarItem.text = 'Vetting Failed';
});
}

Expand Down

0 comments on commit 2f21244

Please # to comment.