dotfiles/.config/nvim/lua/plugins/extras/linting/biome.lua

63 lines
1.6 KiB
Lua

return {
{
"williamboman/mason.nvim",
opts = function(_, opts)
opts.ensure_installed = opts.ensure_installed or {}
vim.list_extend(opts.ensure_installed, { "biome" })
end,
},
{
"neovim/nvim-lspconfig",
opts = {
servers = {
biome = {},
},
},
},
{
"stevearc/conform.nvim",
opts = function(_, opts)
local function add_formatters(tbl)
for ft, formatters in pairs(tbl) do
if opts.formatters_by_ft[ft] == nil then
opts.formatters_by_ft[ft] = formatters
else
vim.list_extend(opts.formatters_by_ft[ft], formatters)
end
end
end
add_formatters({
["jsonc"] = { "biome" },
["json"] = { "biome" },
["javascript"] = { "biome" },
["typescript"] = { "biome" },
["typescriptreact"] = { "biome" },
["javascriptreact"] = { "biome" },
["astro"] = { "biome" },
["svelte"] = { "biome" },
["vue"] = { "biome" },
})
opts.formatters = {
biome = {
condition = function(self, ctx)
return vim.fs.find({ "biome.json" }, { path = ctx.filename, upward = true })[1]
end,
},
prettier = {
condition = function(self, ctx)
return not vim.fs.find({ "biome.json" }, { path = ctx.filename, upward = true })[1]
end,
},
prettierd = {
condition = function(self, ctx)
return not vim.fs.find({ "biome.json" }, { path = ctx.filename, upward = true })[1]
end,
},
}
return opts
end,
},
}