aboutsummaryrefslogtreecommitdiffstats
path: root/lsp/eslint.lua
Commit message (Collapse)AuthorAgeFilesLines
* fix(eslint): LspEslintFixAll defined in wrong buffer #4218Tu2025-11-261-1/+1
|
* fix(lsp): detect deno.jsonc as Deno project for ↵Thiago Marques2025-11-181-1/+1
| | | | | | | biome/eslint/ts_ls/tsgo/vtsls #4203 Even though Deno docs says that both deno.json and deno.jsonc files can be used for its configuration, deno.jsonc was not being considered to prevent biome/eslint/ts_ls/tsgo/vtsls to run in Deno projects.
* fix(eslint.lua): nonsense passed to list_extend()Justin M. Keyes2025-11-141-3/+2
|
* fix: luals warningsJustin M. Keyes2025-11-141-1/+2
|
* fix: exclude deno from biome/eslint/ts_ls/tsgo/vtsls #4130Xubai Wang2025-11-131-0/+6
| | | | | Close https://github.com/neovim/nvim-lspconfig/issues/4129 Since cwd is a necessity for many JavaScript project (see discussions in https://github.com/neovim/nvim-lspconfig/issues/4015), this fix takes an alternative approach to manually exclude Deno projects from biome/eslint/ts_ls/tsgo/vtsls 's `root_dir` detection logic. There is no need to change svelte since it has a different filetype.
* Revert "add deno.lock root marker #4051"Justin M. Keyes2025-09-171-1/+1
| | | | | | | Reverts 33e318a3f0e729fb7ee82619a21172712b0ea288 (except for svelte). fix #4074 close #4076
* fix: ts/js LSPs require lockfile #4062Alexis Tacnet2025-09-101-5/+4
| | | | | | | | Problem: Some projects don't have a lockfile. Solution: - Fallback to ".git" as a lower-priority root-marker (Nvim 0.11.3+). - Fallback to CWD.
* feat(biome,eslint,svelte,ts_ls,tsgo,vtsls): add deno.lock root marker #4051Kai Moschcau2025-09-031-1/+1
| | | | | | | | Problem: `deno.lock` is not recognized as a root marker in JavaScript related servers. Solution: Add `deno.lock` as a root marker.
* fix(ts/js): support older Nvim 0.11.xJustin M. Keyes2025-08-211-2/+3
| | | | fix #4023
* fix(ts/js): give lockfiles equal priority when finding root #4013Oskar Haarklou Veileborg2025-08-201-3/+4
|
* chore: add type annotation for configsIgor2025-08-181-0/+1
|
* fix(ts/js): servers do not start when `bun.lock` exists #4008Methapon20012025-08-181-1/+1
|
* fix(eslint): performance regression on configuration lookup #4004Alexis Tacnet2025-08-171-4/+10
|
* feat(ts/js): improve monorepo support for Typescript, ESLint #3955Alexis Tacnet2025-08-171-29/+63
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PROBLEM: Monorepos (or "workspaces") in Typescript are more and more popular and the associated tooling is evolving to improve the developer experience in such setup. Especially, the `typescript-language-server` and the `vscode-eslint-language-server` now supports monorepos, **removing the need to spawn a different server for each package of a workspace**. Example: with a few packages as the servers need to load every other package to work (the `typescript-language-server`, even if spawned multiple times with different `root_dir`, will load in memory other packages to resolve the types), the amount of memory used grows exponentially. But in fact, those servers support monorepos: they support multiple configurations in subpackages and will load the correct one to process a buffer. The ESLint server even supports loading multiple ESLint binaries (and therefore versions), while keeping one instance of the server. SOLUTION: Instead of only relying on the configuration files as `root_markers`, discover the root of the package / monorepo by finding the Lock files created by node package managers: * `package-lock.json`: Npm * `yarn.lock`: Yarn * `pnpm-lock.yaml`: Pnpm * `bun.lockb`: Bun We still need to look at configuration files to enable the conditionnaly attachment of the LSP for a buffer (for ESLint, we want to attach the LSP only if there are ESLint configuration files) in case of LSP that operates on files that are "generic" (like `typescript` or `javascript`). To do that, I replace the `root_markers` that were the configuration files by a `root_dir` function that superseds them. It will both: * look for a configuration file upward to check if the LSP needs to be attached * look for the root of the "project" via the lock files to specify the `root_dir` of the LSP PRIOR EXPERIMENTATIONS: I've tried to play with the `reuse_client` quite a lot, trying to understand if we need to spawn a new server or not looking at the Typescript / ESLint binary that was loaded, but in fact it's way easier to just have a better `root_dir` that is the true root of the project for the LSP server: in case of those two servers, the root of the package / monorepo. I also tried to use the current directory opened as the `root_dir`, but it's less powerful on nvim compared to VSCode as we navigate more inside folders using terminal commands and then open vim. I think this method also removes the need from a project-local config (which could be quite useful anyway for ESLint flat config setting which auto-detection is a bit unreliable / compute heavy) as this should work normally accross all different setups. Fixes #3910
* feat(eslint): htmlangular filetype #3936Michal Klinovský2025-07-041-0/+1
|
* fix(eslint): LspEslintFixAll is async, writes file without applied fixes #3876Dave Honneffer2025-06-021-6/+3
| | | | | | | | Problem: :LspEslintFixAll command is no longer synchronous with the new `vim.lsp.config` config, so the file is written without the applied fixes. Solution: Use request_sync('workspace/executeCommand') instead of client:exec_cmd().
* docs(eslint): update on_attach example #3844Pavel Pisetski2025-05-211-4/+7
|
* fix(eslint): workspace_required #3805Maksim Terpilovskii2025-04-291-4/+2
|
* fix(eslint): check nil before on_dir #38002025-04-281-1/+3
|
* ci(lint): enforce "Lsp" command name prefixJustin M. Keyes2025-04-211-2/+2
|
* feat(eslint): add vim.lsp.config support #3731Carnavale2025-04-211-0/+182