Skip to content

Commit cd37002

Browse files
authored
Merge branch 'master' into remove_vscode_disposable
2 parents bf8aa4c + 5a7727b commit cd37002

File tree

6 files changed

+28
-6
lines changed

6 files changed

+28
-6
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ Enables the use of pre-release builds of Omnisharp. Downloading a pre-release bu
3535
* If a project is already selected, it displays the name of the selected project. Clicking on it displays a menu to switch to other projects in the workspace.
3636
* If there are multiple possible launch targets, it displays 'Select Project'. Clicking on it displays a menu to select one.
3737

38+
#### Misc
39+
* Enables suppressing the "some projects had trouble loading" popup using the `omnisharp.disableMsBuildDiagnosticWarning` option ([#2110]https://github.com/OmniSharp/omnisharp-vscode/issues/2110)
40+
3841
## 1.14.0 (February 14, 2018)
3942

4043
#### C# Language Support

package.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -560,6 +560,11 @@
560560
"type": "boolean",
561561
"default": true,
562562
"description": "Specifes whether OmniSharp should use VS Code editor settings for C# code formatting (use of tabs, indentation size)."
563+
},
564+
"omnisharp.disableMSBuildDiagnosticWarning": {
565+
"type": "boolean",
566+
"default": false,
567+
"description": "Specifies whether notifications should be shown if OmniSharp encounters warnings or errors loading a project. Note that these warnings/errors are always emitted to the OmniSharp log"
563568
}
564569
}
565570
},

src/main.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import TelemetryReporter from 'vscode-extension-telemetry';
2828
import { addJSONProviders } from './features/json/jsonContributions';
2929
import { ProjectStatusBarObserver } from './observers/ProjectStatusBarObserver';
3030
import CSharpExtensionExports from './CSharpExtensionExports';
31+
import { Options } from './omnisharp/options';
3132
import { vscodeNetworkSettingsProvider, NetworkSettingsProvider } from './NetworkSettings';
3233

3334
export async function activate(context: vscode.ExtensionContext): Promise<CSharpExtensionExports> {
@@ -60,7 +61,7 @@ export async function activate(context: vscode.ExtensionContext): Promise<CSharp
6061
eventStream.subscribe(omnisharpLogObserver.post);
6162
eventStream.subscribe(omnisharpChannelObserver.post);
6263

63-
let warningMessageObserver = new WarningMessageObserver(vscode);
64+
let warningMessageObserver = new WarningMessageObserver(vscode, () => Options.Read().disableMSBuildDiagnosticWarning || false);
6465
eventStream.subscribe(warningMessageObserver.post);
6566

6667
let informationMessageObserver = new InformationMessageObserver(vscode);

src/observers/WarningMessageObserver.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export interface MessageItemWithCommand extends MessageItem {
1616
export class WarningMessageObserver {
1717
private warningMessageDebouncer: Subject<BaseEvent>;
1818

19-
constructor(private vscode: vscode, scheduler?: Scheduler) {
19+
constructor(private vscode: vscode, private disableMsBuildDiagnosticWarning: () => boolean, scheduler?: Scheduler) {
2020
this.warningMessageDebouncer = new Subject<BaseEvent>();
2121
this.warningMessageDebouncer.debounceTime(1500, scheduler).subscribe(async event => {
2222
let message = "Some projects have trouble loading. Please review the output for more details.";
@@ -50,7 +50,7 @@ export class WarningMessageObserver {
5050
}
5151

5252
private handleOmnisharpServerMsBuildProjectDiagnostics(event: OmnisharpServerMsBuildProjectDiagnostics) {
53-
if (event.diagnostics.Errors.length > 0) {
53+
if (!this.disableMsBuildDiagnosticWarning() && event.diagnostics.Errors.length > 0) {
5454
this.warningMessageDebouncer.next(event);
5555
}
5656
}

src/omnisharp/options.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ export class Options {
1818
public useFormatting?: boolean,
1919
public showReferencesCodeLens?: boolean,
2020
public showTestsCodeLens?: boolean,
21-
public disableCodeActions?: boolean) { }
21+
public disableCodeActions?: boolean,
22+
public disableMSBuildDiagnosticWarning?: boolean) { }
2223

2324
public static Read(): Options {
2425
// Extra effort is taken below to ensure that legacy versions of options
@@ -59,6 +60,8 @@ export class Options {
5960

6061
const disableCodeActions = csharpConfig.get<boolean>('disableCodeActions', false);
6162

63+
const disableMSBuildDiagnosticWarning = omnisharpConfig.get<boolean>('disableMSBuildDiagnosticWarning');
64+
6265
return new Options(path,
6366
useMono,
6467
waitForDebugger,
@@ -70,6 +73,7 @@ export class Options {
7073
useFormatting,
7174
showReferencesCodeLens,
7275
showTestsCodeLens,
73-
disableCodeActions);
76+
disableCodeActions,
77+
disableMSBuildDiagnosticWarning);
7478
}
7579
}

test/unitTests/logging/WarningMessageObserver.test.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ suite('WarningMessageObserver', () => {
6161
assertionObservable = new Subject<string>();
6262
scheduler = new TestScheduler(assert.deepEqual);
6363
scheduler.maxFrames = 9000;
64-
observer = new WarningMessageObserver(vscode, scheduler);
64+
observer = new WarningMessageObserver(vscode, () => false, scheduler);
6565
warningMessages = [];
6666
invokedCommand = undefined;
6767
commandDone = new Promise<void>(resolve => {
@@ -77,6 +77,15 @@ suite('WarningMessageObserver', () => {
7777
expect(invokedCommand).to.be.undefined;
7878
});
7979

80+
test('OmnisharpServerMsBuildProjectDiagnostics: No event is posted if warning is disabled', () => {
81+
let newObserver = new WarningMessageObserver(vscode, () => true, scheduler);
82+
let event = getOmnisharpMSBuildProjectDiagnosticsEvent("someFile",
83+
[getMSBuildDiagnosticsMessage("warningFile", "", "", 0, 0, 0, 0)],
84+
[getMSBuildDiagnosticsMessage("warningFile", "", "", 0, 0, 0, 0)]);
85+
newObserver.post(event);
86+
expect(warningMessages).to.be.empty;
87+
});
88+
8089
[
8190
getOmnisharpMSBuildProjectDiagnosticsEvent("someFile",
8291
[getMSBuildDiagnosticsMessage("warningFile", "", "", 1, 2, 3, 4)],

0 commit comments

Comments
 (0)