# mason-conform.nvim Automatically install formatters registered with [conform.nvim](https://github.com/stevearc/conform.nvim) via [Mason](https://github.com/williamboman/mason.nvim). # Requirements - Neovim 0.11+ - [mason.nvim](https://github.com/mason-org/mason.nvim) 2.x - [conform.nvim](https://github.com/stevearc/conform.nvim) (9.x or newer) # Install With [lazy.nvim](https://github.com/folke/lazy.nvim): ```lua require("lazy").setup({ "williamboman/mason.nvim", "stevearc/conform.nvim", "zapling/mason-conform.nvim", }) ``` With Neovim's built-in package manager (`:h vim.pack`, Neovim 0.12+): ```lua vim.pack.add({ { src = "https://github.com/mason-org/mason.nvim" }, { src = "https://github.com/stevearc/conform.nvim" }, { src = "https://github.com/zapling/mason-conform.nvim" }, }) ``` # Setup It's crucial to setup plugins in the following order: - `mason.nvim` - `conform.nvim` - `mason-conform.nvim` Otherwise `mason-conform.nvim` will not have enough information about configured formatters and access the mason registry. # Configuration ```lua require("mason-conform").setup({ ignore_install = {'prettier'} -- List of formatters to ignore during install }) ``` All the `formatters_by_ft` shapes supported by conform are understood: ```lua require("conform").setup({ formatters_by_ft = { -- Plain list lua = { "stylua" }, -- List with inline format options (`lsp_format`, `stop_after_first`, ...) python = { "autopep8", lsp_format = "fallback" }, -- Legacy nested list ("run the first available formatter") markdown = { { "prettierd", "prettier" }, "cbfmt" }, -- Function returning a list (conform "first available" recipe) javascript = function(bufnr) return { require("conform").get_formatter_info("prettier", bufnr).available and "prettier" or "prettierd" } end, }, }) ``` Functions are evaluated without a buffer so that every candidate formatter can be discovered and installed. A function that requires a buffer is skipped instead of raising an error. # Available formatters Only formatters that are available in the [mason registry](https://github.com/mason-org/mason-registry) can be downloaded automatically. If the formatter is available in the registry and it's not being downloaded, this plugin might be missing a `conform` => `mason` mapping in the file [lua/mason-conform/mapping.lua](lua/mason-conform/mapping.lua). # Healthcheck Run `:checkhealth mason-conform` to verify that Neovim, `mason.nvim` and `conform.nvim` are set up correctly, and to see which configured formatters cannot be installed automatically. # License `mason-conform.nvim` is a blatant copy of [mason-nvim-lint](https://github.com/rshkarin/mason-nvim-lint) which in turn takes heavy insperation from [mason-lspconfig.nvim](https://github.com/williamboman/mason-lspconfig.nvim)