Skip to content
This repository has been archived by the owner on Jul 15, 2023. It is now read-only.

Commit

Permalink
Show build/vet/lint status in Status bar. Fix #1456 (#1460)
Browse files Browse the repository at this point in the history
* Show build/vet/lint status in Status bar. Fixes #1456.

* Clear output channel when build/lint/vet is run on demand.

* Clear results from onsave when running on demand, vice-versa
  • Loading branch information
cheesedosa authored and ramya-rao-a committed Jan 29, 2018
1 parent e19be06 commit 8a4bab8
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 15 deletions.
16 changes: 11 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,19 @@ 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...');

outputChannel.clear(); // Ensures stale output from build on save is cleared
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
3 changes: 2 additions & 1 deletion src/goCheck.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import path = require('path');
import os = require('os');
import { getGoRuntimePath } from './goPath';
import { getCoverage } from './goCover';
import { outputChannel } from './goStatus';
import { outputChannel, diagnosticsStatusBarItem } from './goStatus';
import { goTest } from './testUtils';
import { ICheckResult } from './util';
import { goLint } from './goLint';
Expand Down Expand Up @@ -39,6 +39,7 @@ export function notifyIfGeneratedFile(e: vscode.TextDocumentChangeEvent) {
}

export function check(fileUri: vscode.Uri, goConfig: vscode.WorkspaceConfiguration): Promise<ICheckResult[]> {
diagnosticsStatusBarItem.hide();
outputChannel.clear();
let runningToolsPromises = [];
let cwd = path.dirname(fileUri.fsPath);
Expand Down
16 changes: 11 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,19 @@ 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...');

outputChannel.clear(); // Ensures stale output from lint on save is cleared
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
15 changes: 11 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,19 @@ 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...');

outputChannel.clear(); // Ensures stale output from vet on save is cleared
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 8a4bab8

Please # to comment.