diff --git a/CHANGELOG.md b/CHANGELOG.md index 66f744f54..4625e46da 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ * There currently is no completion support for package references in csproj files. ([#1156](https://github.com/OmniSharp/omnisharp-vscode/issues/1156)) * As an alternative, consider installing the [MSBuild Project Tools](https://marketplace.visualstudio.com/items?itemName=tintoy.msbuild-project-tools) extension by @tintoy. + +## 1.16.0 _(Not Yet Released)_ + +#### Editor + +* Improved diagnostics by refreshing them when the active editor changes or the current window is focused. (PR: [#2317](https://github.com/OmniSharp/omnisharp-vscode/pull/2317)) _(Contributed by [@SirIntruder](https://github.com/SirIntruder)) ## 1.15.2 (May 15, 1018) diff --git a/src/features/diagnosticsProvider.ts b/src/features/diagnosticsProvider.ts index 6ea57e51d..136c99776 100644 --- a/src/features/diagnosticsProvider.ts +++ b/src/features/diagnosticsProvider.ts @@ -133,7 +133,9 @@ class DiagnosticsProvider extends AbstractSupport { let d4 = vscode.workspace.onDidOpenTextDocument(event => this._onDocumentAddOrChange(event), this); let d3 = vscode.workspace.onDidChangeTextDocument(event => this._onDocumentAddOrChange(event.document), this); let d5 = vscode.workspace.onDidCloseTextDocument(this._onDocumentRemove, this); - this._disposable = new CompositeDisposable(this._diagnostics, d1, d2, d3, d4, d5); + let d6 = vscode.window.onDidChangeActiveTextEditor(event => this._onDidChangeActiveTextEditor(event), this); + let d7 = vscode.window.onDidChangeWindowState(event => this._OnDidChangeWindowState(event), this); + this._disposable = new CompositeDisposable(this._diagnostics, d1, d2, d3, d4, d5, d6, d7); // Go ahead and check for diagnostics in the currently visible editors. for (let editor of vscode.window.visibleTextEditors) { @@ -156,6 +158,19 @@ class DiagnosticsProvider extends AbstractSupport { this._disposable.dispose(); } + private _OnDidChangeWindowState(windowState: vscode.WindowState): void { + if (windowState.focused === true) { + this._onDidChangeActiveTextEditor(vscode.window.activeTextEditor); + } + } + + private _onDidChangeActiveTextEditor(textEditor: vscode.TextEditor): void { + // active text editor can be undefined. + if (textEditor != undefined && textEditor.document != null) { + this._onDocumentAddOrChange(textEditor.document); + } + } + private _onDocumentAddOrChange(document: vscode.TextDocument): void { if (document.languageId === 'csharp' && document.uri.scheme === 'file') { this._validateDocument(document); @@ -163,7 +178,7 @@ class DiagnosticsProvider extends AbstractSupport { } } - private _onDocumentRemove(document: vscode.TextDocument) { + private _onDocumentRemove(document: vscode.TextDocument): void { let key = document.uri; let didChange = false; if (this._diagnostics.get(key)) {