feat(extras): add biome formatter (#4448)
## Description This PR adds biome as a conform/null-ls formatter. When using biome lsp formatting directly, the syntax highlighting is flickering. However, it works great when formatting is configured with conform. To avoid conflicts with Prettier, it is recommended to set `vim.g.lazyvim_prettier_needs_config = true` In this case, both prettier and biome formatters could be activated simultaneously. ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines.
This commit is contained in:

committed by
GitHub

parent
8235126a32
commit
b8407f4b12
59
lua/lazyvim/plugins/extras/formatting/biome.lua
Normal file
59
lua/lazyvim/plugins/extras/formatting/biome.lua
Normal file
@ -0,0 +1,59 @@
|
||||
---@diagnostic disable: inject-field
|
||||
if lazyvim_docs then
|
||||
-- Enable this option to avoid conflicts with Prettier.
|
||||
vim.g.lazyvim_prettier_needs_config = true
|
||||
end
|
||||
|
||||
-- https://biomejs.dev/internals/language-support/
|
||||
local supported = {
|
||||
"astro",
|
||||
"css",
|
||||
"graphql",
|
||||
-- "html",
|
||||
"javascript",
|
||||
"javascriptreact",
|
||||
"json",
|
||||
"jsonc",
|
||||
-- "markdown",
|
||||
"svelte",
|
||||
"typescript",
|
||||
"typescriptreact",
|
||||
"vue",
|
||||
-- "yaml",
|
||||
}
|
||||
|
||||
return {
|
||||
{
|
||||
"williamboman/mason.nvim",
|
||||
opts = { ensure_installed = { "biome" } },
|
||||
},
|
||||
|
||||
{
|
||||
"stevearc/conform.nvim",
|
||||
optional = true,
|
||||
---@param opts ConformOpts
|
||||
opts = function(_, opts)
|
||||
opts.formatters_by_ft = opts.formatters_by_ft or {}
|
||||
for _, ft in ipairs(supported) do
|
||||
opts.formatters_by_ft[ft] = opts.formatters_by_ft[ft] or {}
|
||||
table.insert(opts.formatters_by_ft[ft], "biome")
|
||||
end
|
||||
|
||||
opts.formatters = opts.formatters or {}
|
||||
opts.formatters.biome = {
|
||||
require_cwd = true,
|
||||
}
|
||||
end,
|
||||
},
|
||||
|
||||
-- none-ls support
|
||||
{
|
||||
"nvimtools/none-ls.nvim",
|
||||
optional = true,
|
||||
opts = function(_, opts)
|
||||
local nls = require("null-ls")
|
||||
opts.sources = opts.sources or {}
|
||||
table.insert(opts.sources, nls.builtins.formatting.biome)
|
||||
end,
|
||||
},
|
||||
}
|
Reference in New Issue
Block a user