Linter reference (50 languages)
OpenFiles doesn’t lint anything itself. It opens files so the extensions below can do their job. Run Doctor checks which of these your workspace needs.
Scope column:
- Open: diagnostics only for open files by default.
- Workspace: analyzes the whole project.
- Verified means we found the default in the extension’s own settings or docs (see Evidence).
- The rest is what we expect from how the tool works.
| # | Language | Extension | Open VSX | Scope |
|---|---|---|---|---|
| 1 | TypeScript | built-in + ESLint | ✅ | Open (verified) |
| 2 | JavaScript | built-in + ESLint, Biome, Oxc | ✅ | Open (verified) |
| 3 | Python | Pylance, Ruff, Mypy | Pylance ❌ → basedpyright | Open (verified) |
| 4 | Java | Language Support for Java | ✅ | Workspace |
| 5 | C# | C# / C# Dev Kit | ❌ → muhammad-sammy.csharp | Open (verified) |
| 6 | C / C++ | C/C++, clangd | cpptools ❌, clangd ✅ | Open |
| 7 | HTML | built-in + HTMLHint | ✅ | Open |
| 8 | CSS / SCSS / Less | built-in + Stylelint | ✅ | Open |
| 9 | SQL | SQLFluff, MSSQL | ✅ | Open |
| 10 | Bash / Shell | ShellCheck, Bash IDE | ✅ | Open |
| 11 | PowerShell | PowerShell | ✅ | Open |
| 12 | PHP | Intelephense, PHPStan, PHP Tools | ✅ | Open (verified, Intelephense) |
| 13 | Go | Go | ✅ | Workspace (verified) |
| 14 | Rust | rust-analyzer | ✅ | Workspace, on save in the editor (verified) |
| 15 | Kotlin | Kotlin LSP, fwcd.kotlin | ✅ | ? |
| 16 | Lua | Lua | ✅ | Workspace after a delay |
| 17 | Ruby | Ruby LSP | ✅ | Open (verified) |
| 18 | Dart / Flutter | Dart | ✅ | Workspace (verified) |
| 19 | Swift | Swift | ✅ | Open |
| 20 | JSON / JSONC | built-in (schemas) | built-in | Open |
| 21 | YAML | YAML | ✅ | Open |
| 22 | Markdown | markdownlint | ✅ | Open |
| 23 | Dockerfile | Docker DX, hadolint | ✅ | Open |
| 24 | Terraform / HCL | HashiCorp Terraform | ✅ | Open / module |
| 25 | R | R | ✅ | Open |
| 26 | Julia | Julia | ✅ | ? |
| 27 | Scala | Metals | ✅ | Workspace (compile) |
| 28 | Haskell | Haskell | ✅ | Open |
| 29 | Elixir | ElixirLS, Lexical | elixir-lsp.elixir-ls | Workspace (mix compile) |
| 30 | Erlang | Erlang LS | ✅ | ? |
| 31 | Clojure | Calva | ✅ | Workspace on startup |
| 32 | F# | Ionide | ✅ | Open |
| 33 | OCaml | OCaml Platform | ✅ | Open |
| 34 | Zig | Zig | ✅ | Open |
| 35 | Perl | Perl Navigator | ✅ | Open |
| 36 | Fortran | Modern Fortran | ✅ | Open |
| 37 | MATLAB | MATLAB | ✅ | Open |
| 38 | Objective-C | clangd | ✅ | Open |
| 39 | Delphi / Object Pascal | DelphiLSP | ❌ | ? |
| 40 | Ada | Ada & SPARK | ✅ | ? |
| 41 | COBOL | COBOL Language Support | ✅ | Open |
| 42 | Solidity | Hardhat Solidity, Solidity | ✅ | Open |
| 43 | Vue | Vue - Official | ✅ | Open |
| 44 | Svelte | Svelte for VS Code | ✅ | Open |
| 45 | Astro | Astro | ✅ | Open |
| 46 | GraphQL | GraphQL | ✅ | Open |
| 47 | TOML | Even Better TOML | ✅ | Open |
| 48 | XML | XML | ✅ | Open |
| 49 | Prisma | Prisma | ✅ | Open |
| 50 | Protobuf | Buf | ✅ | Open |
More languages with good extensions: LaTeX (LaTeX Workshop), Gleam, Nim, Elm, Crystal, V, Mojo, Groovy, Nix, Ansible, CMake, GitHub Actions, Tailwind CSS.
Languages were chosen from the Stack Overflow 2025 survey, GitHub Octoverse 2025 and the TIOBE index, plus common config formats. Extension IDs were checked against both registries in September 2026.
Evidence
Section titled “Evidence”Open files only by default:
- TypeScript:
typescript.tsserver.experimental.enableProjectDiagnosticsisfalse, described as “Enables project wide error reporting”. package.json - ESLint:
eslint.runisonType, andeslint.lintTask.enable(“a task for linting the whole workspace”) isfalse. package.json - Pylance / Pyright:
python.analysis.diagnosticModeisopenFilesOnly. “If this option is set to ‘openFilesOnly’, pyright analyzes only open files.” Pyright settings - C#:
dotnet.backgroundAnalysis.analyzerDiagnosticsScopeandcompilerDiagnosticsScopeareopenFiles. package.json - PHP Intelephense:
intelephense.diagnostics.runisonType, with no workspace mode (#1467). package.json - Ruby LSP: pull diagnostics per document; the server registers
workspace_diagnostics: false. server.rb
Whole workspace by default:
- Dart:
onlyAnalyzeProjectsWithOpenFilesdefaults tofalse. LSP spec - gopls: workspace diagnostics are recomputed after about 1 s idle. diagnostics.md
- rust-analyzer:
checkOnSaveandcheck.workspacearetrue, but the check only runs on save in the editor. package.json - Java:
java.autobuild.enabledistrue. package.json
Found something out of date? Open an issue, since defaults change.