90 lines
2.9 KiB
Markdown
90 lines
2.9 KiB
Markdown
# 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)
|