## 経緯 [[ファイルが保存されたときに自動フォーマット (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) ```