Skip to content

[Bug]: Diagnostics are executed for non-C# files when no default formatter is configured #1885

Description

@rvnlord

Environment:

  • Windows 10
  • CSharpier: v10.0.3

Summary

DiagnosticsService.runDiagnostics() incorrectly assumes that CSharpier should handle a file when editor.defaultFormatter is null:

let a = workspace.getConfiguration("editor", uri).get("defaultFormatter");
let i = ... && (a == null || a === "csharpier.csharpier-vscode");

When opening a .d.ts file (typescript language ID), no default formatter may be configured for TypeScript, causing a == null to evaluate to true. As a result, CSharpier treats the file as if it should be formatted, even though it isn't a supported language.

Additionally, registerEditorEvents() invokes diagnostics on onDidChangeActiveTextEditor and onDidSaveTextDocument without checking the document's language ID.

Image

Workarounds

Configure explicit formatters for TS/JS files:

"[typescript]": {
    "editor.defaultFormatter": "vscode.typescript-language-features"
},
"[typescriptreact]": {
    "editor.defaultFormatter": "vscode.typescript-language-features"
},
"[javascript]": {
    "editor.defaultFormatter": "vscode.typescript-language-features"
},
"[javascriptreact]": {
    "editor.defaultFormatter": "vscode.typescript-language-features"
}

Or disable diagnostics entirely:

"csharpier.enableDiagnostics": false

Expected Behavior

Diagnostics should only run for languages supported by CSharpier (C# and XML), regardless of whether editor.defaultFormatter is configured.

Actual Behavior

Opening or saving unsupported files such as .d.ts can trigger CSharpier diagnostics if no language-specific formatter has been configured.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions