From f5280882880dcbf54de68afc229dc6160a6022fd Mon Sep 17 00:00:00 2001 From: Zoe Roux Date: Fri, 27 Dec 2024 18:10:28 +0100 Subject: [PATCH] Configure conform --- nvim/lua/plugins/conform.lua | 60 ++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 nvim/lua/plugins/conform.lua diff --git a/nvim/lua/plugins/conform.lua b/nvim/lua/plugins/conform.lua new file mode 100644 index 0000000..5336628 --- /dev/null +++ b/nvim/lua/plugins/conform.lua @@ -0,0 +1,60 @@ +return { + { + "conform.nvim", + lazy = false, + load = function() end, + cmd = "ConformInfo", + keys = { + { + "e", + function() + require("conform").format() + end, + desc = "Format", + mode = { "n", "v" }, + }, + }, + opts = { + default_format_opts = { async = true, lsp_format = "fallback" }, + formatters_by_ft = { + python = function(bufnr) + if require("conform").get_formatter_info("ruff_format", bufnr).available then + return { "ruff_format" } + else + return { "isort", "black" } + end + end, + javascript = { "biome", "prettierd", "prettier", stop_after_first = true }, + typescript = { "biome", "prettierd", "prettier", stop_after_first = true }, + javascriptreact = { "biome", "prettierd", "prettier", stop_after_first = true }, + typescriptreact = { "biome", "prettierd", "prettier", stop_after_first = true }, + json = { "biome", "prettierd", "prettier", stop_after_first = true }, + css = { "biome", "prettierd", "prettier", stop_after_first = true }, + html = { "biome", "prettierd", "prettier", stop_after_first = true }, + sql = { "pg_format" }, + cs = { "csharpier" }, + nix = { "alejandra" }, + -- ["_"] = { "injected", lsp_format = "last" }, + ["*"] = { "injected" } + }, + formatters = { + biome = { + -- disable node module search since native binaries can't be run from nix + command = "biome", + }, + csharpier = function() + return { + cwd = require("conform.util").root_file(function(name) + return name:match('.*%.sln$') or name:match('.*%.csproj$') + end), + require_cwd = true, + } + end, + }, + }, + after = function(plug) + require("conform").setup(plug.opts) + vim.o.formatexpr = "v:lua.require'conform'.formatexpr()" + end + }, +}