<feed xmlns='http://www.w3.org/2005/Atom'>
<title>nvim-lspconfig/lsp/biome.lua, branch v2.5.0</title>
<subtitle>[no description]</subtitle>
<id>http://git.sudomsg.com/mirror/nvim-lspconfig/atom/lsp/biome.lua?h=v2.5.0</id>
<link rel='self' href='http://git.sudomsg.com/mirror/nvim-lspconfig/atom/lsp/biome.lua?h=v2.5.0'/>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/nvim-lspconfig/'/>
<updated>2025-09-18T03:07:52Z</updated>
<entry>
<title>Revert "add deno.lock root marker #4051"</title>
<updated>2025-09-18T03:07:52Z</updated>
<author>
<name>Justin M. Keyes</name>
<email>justinkz@gmail.com</email>
</author>
<published>2025-09-18T03:04:59Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/nvim-lspconfig/commit/?id=78174f395e705de97d1329c18394831737d9a4b4'/>
<id>urn:sha1:78174f395e705de97d1329c18394831737d9a4b4</id>
<content type='text'>
Reverts 33e318a3f0e729fb7ee82619a21172712b0ea288 (except for svelte).

fix #4074
close #4076
</content>
</entry>
<entry>
<title>fix: ts/js LSPs require lockfile #4062</title>
<updated>2025-09-11T03:31:23Z</updated>
<author>
<name>Alexis Tacnet</name>
<email>alexis@mistral.ai</email>
</author>
<published>2025-09-11T03:31:23Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/nvim-lspconfig/commit/?id=ec54d14e0ad816e4099738a2b8f8e61ed3c9430e'/>
<id>urn:sha1:ec54d14e0ad816e4099738a2b8f8e61ed3c9430e</id>
<content type='text'>
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.</content>
</entry>
<entry>
<title>feat(biome,eslint,svelte,ts_ls,tsgo,vtsls): add deno.lock root marker #4051</title>
<updated>2025-09-03T12:21:40Z</updated>
<author>
<name>Kai Moschcau</name>
<email>kai@kmoschcau.de</email>
</author>
<published>2025-09-03T12:21:40Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/nvim-lspconfig/commit/?id=33e318a3f0e729fb7ee82619a21172712b0ea288'/>
<id>urn:sha1:33e318a3f0e729fb7ee82619a21172712b0ea288</id>
<content type='text'>
Problem:
`deno.lock` is not recognized as a root marker in JavaScript related
servers.

Solution:
Add `deno.lock` as a root marker.</content>
</entry>
<entry>
<title>fix(ts/js): support older Nvim 0.11.x</title>
<updated>2025-08-22T01:31:43Z</updated>
<author>
<name>Justin M. Keyes</name>
<email>justinkz@gmail.com</email>
</author>
<published>2025-08-22T01:31:43Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/nvim-lspconfig/commit/?id=8373a1b7a7ab7a9972b55182073be5ac2f3bec0a'/>
<id>urn:sha1:8373a1b7a7ab7a9972b55182073be5ac2f3bec0a</id>
<content type='text'>
fix #4023
</content>
</entry>
<entry>
<title>fix(ts/js): give lockfiles equal priority when finding root #4013</title>
<updated>2025-08-20T16:31:19Z</updated>
<author>
<name>Oskar Haarklou Veileborg</name>
<email>ohv1020@hotmail.com</email>
</author>
<published>2025-08-20T16:31:19Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/nvim-lspconfig/commit/?id=99748c019f214d2f4372094fe5766a616f27e124'/>
<id>urn:sha1:99748c019f214d2f4372094fe5766a616f27e124</id>
<content type='text'>
</content>
</entry>
<entry>
<title>chore: miscellaneous type fixes</title>
<updated>2025-08-19T02:41:27Z</updated>
<author>
<name>Igor</name>
<email>igorlfs@ufmg.br</email>
</author>
<published>2025-08-19T02:41:27Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/nvim-lspconfig/commit/?id=ec27b247a5e25f6997b66aee30090eda18efaa27'/>
<id>urn:sha1:ec27b247a5e25f6997b66aee30090eda18efaa27</id>
<content type='text'>
</content>
</entry>
<entry>
<title>chore: add type annotation for configs</title>
<updated>2025-08-19T02:39:23Z</updated>
<author>
<name>Igor</name>
<email>igorlfs@ufmg.br</email>
</author>
<published>2025-08-19T02:39:23Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/nvim-lspconfig/commit/?id=030a72f0aa4d56f9e8ff67921e6e3ffd0e97bf07'/>
<id>urn:sha1:030a72f0aa4d56f9e8ff67921e6e3ffd0e97bf07</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix(ts/js): servers do not start when `bun.lock` exists #4008</title>
<updated>2025-08-18T15:09:12Z</updated>
<author>
<name>Methapon2001</name>
<email>61303214+Methapon2001@users.noreply.github.com</email>
</author>
<published>2025-08-18T15:09:12Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/nvim-lspconfig/commit/?id=34c9ecfdcc19d579f51c072300a71445fbec9da8'/>
<id>urn:sha1:34c9ecfdcc19d579f51c072300a71445fbec9da8</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat(ts/js): improve monorepo support for Typescript, ESLint #3955</title>
<updated>2025-08-17T21:12:42Z</updated>
<author>
<name>Alexis Tacnet</name>
<email>alexis@mistral.ai</email>
</author>
<published>2025-08-17T21:12:42Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/nvim-lspconfig/commit/?id=8ad2d8d8991d868ff8e7c21a7db624f32b882531'/>
<id>urn:sha1:8ad2d8d8991d868ff8e7c21a7db624f32b882531</id>
<content type='text'>
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</content>
</entry>
<entry>
<title>feat(biome): monorepo support #3972</title>
<updated>2025-07-24T01:36:25Z</updated>
<author>
<name>Igor Lacerda</name>
<email>igorlfs@ufmg.br</email>
</author>
<published>2025-07-24T01:36:25Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/nvim-lspconfig/commit/?id=169745f176f58becad80363c3f8f2315ed6bb365'/>
<id>urn:sha1:169745f176f58becad80363c3f8f2315ed6bb365</id>
<content type='text'>
The biome [documentation](https://biomejs.dev/guides/big-projects/#use-multiple-configuration-files) mentions that 

&gt; When you use Biome’s features - either with the CLI or LSP - the tool looks for the nearest configuration file using the current working directory.
&gt;
&gt; If Biome doesn’t find the configuration file there, it starts traversing upwards the directories of the file system, until it finds one.

I think it makes sense to follow this recommendation, so we can have proper monorepo support. Currently, in a monorepo, a new client is started for each `biome.json` (similar situation as #3910), which is unnecessary, since biome supports monorepos [natively](https://biomejs.dev/guides/big-projects/#monorepo) (as of v2). The alternatives I have considered aren't as robust.

The first concern is searching for a `biome.json` to be set as the root. Unfortunately, that's cumbersome: the documentation recommends flagging the files that _aren't_ the root. That means we _can't_ use `root_markers_with_field` to search for a file that **is** the root. The proposed solution solves this issue by behaving as the CLI would.

Secondly, we have to check if a project uses biome, via `package.json` and friends, which is the fallback behavior. I've considered using #3955's approach of lock files, but since it would require searching for the field 'biome' within lock files (which are often thousands of lines long), I was worried about causing a performance hiccup.</content>
</entry>
<entry>
<title>fix(biome): error when using non-local biome binary #3962</title>
<updated>2025-07-19T15:29:49Z</updated>
<author>
<name>Chris Grieser</name>
<email>73286100+chrisgrieser@users.noreply.github.com</email>
</author>
<published>2025-07-19T15:29:49Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/nvim-lspconfig/commit/?id=24edc2b87786b921276d092d9e7d8202d0cdf259'/>
<id>urn:sha1:24edc2b87786b921276d092d9e7d8202d0cdf259</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat(biome): use project-local bin if available #3957</title>
<updated>2025-07-19T01:43:57Z</updated>
<author>
<name>Igor Lacerda</name>
<email>igorlfs@ufmg.br</email>
</author>
<published>2025-07-19T01:43:57Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/nvim-lspconfig/commit/?id=33898a06457b1074a3846958233d29c9ee191cb5'/>
<id>urn:sha1:33898a06457b1074a3846958233d29c9ee191cb5</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat(biome): add `html` as filetype (#3913)</title>
<updated>2025-06-18T12:23:47Z</updated>
<author>
<name>Chris Grieser</name>
<email>73286100+chrisgrieser@users.noreply.github.com</email>
</author>
<published>2025-06-18T12:23:47Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/nvim-lspconfig/commit/?id=18ad378b95842206e0cc53ed45994f1ac0666f24'/>
<id>urn:sha1:18ad378b95842206e0cc53ed45994f1ac0666f24</id>
<content type='text'>
The latest release of biome adds prelimanary support for formatting html
files https://biomejs.dev/blog/biome-v2/#html-formatter

Thus, html should be added to the list of filetypes for the biome LSP.</content>
</entry>
<entry>
<title>docs: cleanup</title>
<updated>2025-04-18T15:44:38Z</updated>
<author>
<name>Justin M. Keyes</name>
<email>justinkz@gmail.com</email>
</author>
<published>2025-04-18T15:44:38Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/nvim-lspconfig/commit/?id=f8b5cbe6312b568def1f91d747e2cdb8984fdf2e'/>
<id>urn:sha1:f8b5cbe6312b568def1f91d747e2cdb8984fdf2e</id>
<content type='text'>
- brief should live at the top of each file
- fix indentation for some docs
</content>
</entry>
<entry>
<title>feat(biome): vim.lsp.config with workspace_required, root_dir #3727</title>
<updated>2025-04-15T13:26:49Z</updated>
<author>
<name>Chris Grieser</name>
<email>73286100+chrisgrieser@users.noreply.github.com</email>
</author>
<published>2025-04-15T13:26:49Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/nvim-lspconfig/commit/?id=4cb35c04d36efb1a393bce38d40689a76b0c3d62'/>
<id>urn:sha1:4cb35c04d36efb1a393bce38d40689a76b0c3d62</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Revert "feat(biome): add `vim.lsp.config` support" #3718</title>
<updated>2025-04-13T21:35:29Z</updated>
<author>
<name>Chris Grieser</name>
<email>73286100+chrisgrieser@users.noreply.github.com</email>
</author>
<published>2025-04-13T21:35:29Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/nvim-lspconfig/commit/?id=2c897a02c65f9d4cdbd6609f8e5add1d14fceae1'/>
<id>urn:sha1:2c897a02c65f9d4cdbd6609f8e5add1d14fceae1</id>
<content type='text'>
This reverts commit cd54cca6c4a03b89f2a82e32ae6bfc230b5b4193.</content>
</entry>
<entry>
<title>feat(biome): add `vim.lsp.config` support (#3716)</title>
<updated>2025-04-13T12:47:12Z</updated>
<author>
<name>Chris Grieser</name>
<email>73286100+chrisgrieser@users.noreply.github.com</email>
</author>
<published>2025-04-13T12:47:12Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/nvim-lspconfig/commit/?id=cd54cca6c4a03b89f2a82e32ae6bfc230b5b4193'/>
<id>urn:sha1:cd54cca6c4a03b89f2a82e32ae6bfc230b5b4193</id>
<content type='text'>
</content>
</entry>
</feed>
