## 経緯
[[ファイルが保存されたときに自動フォーマット (none-ls.nvim)|ファイルが保存されたときに自動フォーマット]]する設定をしていると、[[none-ls.nvim]]で設定した[[フォーマッター]]にてフォーマットできるが、[[nvim-lspconfig]]で設定された[[LSPクライアント]]がフォーマット機能を持っていると、2つ以上のフォーマットがかかってしまうという問題がある。
## 対応方法
フォーマット処理の条件に`filter`として、[[LSPクライアント]]の名称が`null-ls`の場合のみを指定すればよい。
```lua
on_attach = function(client, bufnr)
if client.supports_method("textDocument/formatting") then
vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr })
vim.api.nvim_create_autocmd("BufWritePre", {
group = augroup,
buffer = bufnr,
callback = function()
vim.lsp.buf.format({
async = false,
-- これを追加
filter = function(c)
return c.name == "null-ls"
end,
})
end,
})
end
end,
```
一部の[[LSPクライアント]]のみフォーマッターを無効化したい場合は`filter` functionの中身を以下のようにする。
```lua
-- lua_ls, volar, tsserverのフォーマッターだけ無効にしたい場合
local disabled_format_clients = { "lua_ls", "volar", "tsserver" }
return not vim.tbl_contains(disabled_format_clients, c.name)
```