starter/lua/plugins/format.lua

73 lines
2.1 KiB
Lua

return {
{
"stevearc/conform.nvim",
event = { "BufWritePre" },
cmd = { "ConformInfo" },
opts = {
-- format_on_save = {
-- timeout_ms = 500,
-- lsp_fallback = true,
-- },
formatters_by_ft = {
nix = { "nixpkgs-fmt" },
lua = { "stylua" },
javascript = { { "prettierd" } },
javascriptreact = { { "prettierd" } },
typescript = { { "prettierd" } },
typescriptreact = { { "prettierd" } },
json = { "prettierd" },
jsonc = { "prettierd" },
yaml = { "prettierd" },
markdown = { "prettierd" },
["markdown.mdx"] = { "prettierd" },
css = { "prettierd" },
scss = { "prettierd" },
html = { "prettierd" },
},
-- Configure formatters
formatters = {
eslint_d = {
-- Only run eslint if we find a config file in the project
condition = function(ctx)
return vim.fs.find({
".eslintrc.js",
".eslintrc.cjs",
".eslintrc.yaml",
".eslintrc.yml",
".eslintrc.json",
"eslint.config.js",
"package.json",
}, { path = ctx.filename, upward = true })[1] ~= nil
end,
},
["nixpkgs-fmt"] = {
command = "nixpkgs-fmt",
stdin = true,
},
prettierd = {
-- This tells conform to only run prettier when it finds a config file
condition = function(ctx)
return vim.fs.find({
".prettierrc",
".prettierrc.js",
".prettierrc.json",
".prettierrc.yml",
".prettierrc.yaml",
".prettierrc.json5",
".prettierrc.cjs",
"prettier.config.js",
"prettier.config.cjs",
"prettier.config.mjs",
"package.json",
}, { path = ctx.filename, upward = true })[1] ~= nil
end,
},
stylua = {
command = "stylua",
args = { "--search-parent-directories", "--stdin-filepath", "$FILENAME", "-" },
},
},
},
},
}