Closes #29757 Closes #49387 This PR upgrades ESLint language server from `vscode-eslint 2.4.4` to upstream `microsoft/vscode-eslint 3.0.24`, and make the workspace configuration version-aware so ESLint 8, 9, and 10 take the correct config-mode path. The key part is that the 3.x bump alone is not enough. This PR keeps Zed out of that path except where it is still actually needed. Rest heavy-lifting is done by eslint server itself. Zed now only overrides ESLint settings in the two known broken cases: - ESLint 8.21-8.56 flat config: send `experimental.useFlatConfig = true` - ESLint 9 legacy config: send `useFlatConfig = false` All other cases defer to `vscode-eslint 3.x`'s own config and working-directory discovery. For testing, I created https://github.com/smitbarmase/eslint-repros, which contains a versioned ESLint repros covering root flat config, legacy config, and package-local monorepo cases across ESLint 8, 9, and 10. Here is compare between `zed/main`, a pure `vscode-eslint 3.x` upgrade and this branch with the config-mode fixes: ## zed main ```text eslint-v8_21-flat-root-single eslint-v8_56-flat-package-local-monorepo -> breaks on main eslint-v8_56-flat-root-single eslint-v8_56-legacy-root-single eslint-v8_57-flat-package-local-monorepo -> breaks on main eslint-v8_57-flat-root-single eslint-v8_57-legacy-root-single eslint-v9_0-flat-package-local-monorepo eslint-v9_0-flat-root-single eslint-v9_0-legacy-root-single -> breaks on main eslint-v10_0-flat-package-local-monorepo eslint-v10_0-flat-root-single -> breaks on main ``` ## vscode-eslint 3.x upgrade ```text eslint-v8_21-flat-root-single eslint-v8_56-flat-package-local-monorepo -> breaks on 3.x upgrade eslint-v8_56-flat-root-single eslint-v8_56-legacy-root-single eslint-v8_57-flat-package-local-monorepo eslint-v8_57-flat-root-single eslint-v8_57-legacy-root-single eslint-v9_0-flat-package-local-monorepo eslint-v9_0-flat-root-single eslint-v9_0-legacy-root-single -> breaks on 3.x upgrade eslint-v10_0-flat-package-local-monorepo eslint-v10_0-flat-root-single -> breaks on 3.x upgrade ``` ## vscode-eslint 3.x upgrade + use flat config fixes ```text eslint-v8_21-flat-root-single eslint-v8_56-flat-package-local-monorepo eslint-v8_56-flat-root-single eslint-v8_56-legacy-root-single eslint-v8_57-flat-package-local-monorepo eslint-v8_57-flat-root-single eslint-v8_57-legacy-root-single eslint-v9_0-flat-package-local-monorepo eslint-v9_0-flat-root-single eslint-v9_0-legacy-root-single eslint-v10_0-flat-package-local-monorepo eslint-v10_0-flat-root-single ``` Self-Review Checklist: - [x] I've reviewed my own diff for quality, security, and reliability - [x] Unsafe blocks (if any) have justifying comments - [x] The content is consistent with the [UI/UX checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) - [x] Tests cover the new/changed behavior - [x] Performance impact has been considered and is acceptable Release Notes: - Fixed ESLint not reporting diagnostics in some cases for projects that use flat-config, legacy-config, and monorepo projects across ESLint 8, 9, and 10.
2 files changedLine totals unavailable