問題
Neovimでnune-lsを通してprettierでフォーマットを書ける設定を書いた
map("n", "<C-f>", "<CMD>lua vim.lsp.buf.format({ async = false })<CR><CMD>w<CR>", opts)
しかしCLIでprettierコマンドを使った時と謎の差分が出てしまっていた
.prettierrcが読み込まれていないか,Neovimで実行されるprettierとCLIで実行されるprettierのバージョンが同じか等を調査したが解決できなかった
原因
Masonでインストールしていたtypescript-language-serverがprettierのフォーマット後に実行を行っていたのが原因だった
解決策
typescript-language-serverのフォーマット機能をオフにするだけです
自分の環境ではMasonを使っているのでmason-lspconfigで設定を行っています
{
"williamboman/mason-lspconfig.nvim",
config = function()
local lspconfig = require("lspconfig")
require("mason-lspconfig").setup_handlers({
tsserver = function()
lspconfig.tsserver.setup({
on_attach = function(client, bufnr)
client.server_capabilities.documentFormattingProvider = false
client.server_capabilities.documentRangeFormattingProvider = false
end,
})
end,
})
end,
},
終わりに
原因に気づくまでに時間がかかったので同じように困っている人の助けになれば幸いです