Prettier plugin for Neovim's built-in LSP client.
Install the plugins with your preferred plugin manager. For example, with vim-plug
:
Plug 'neovim/nvim-lspconfig'
Plug 'jose-elias-alvarez/null-ls.nvim'
Plug 'MunifTanjim/prettier.nvim'
use('neovim/nvim-lspconfig')
use('jose-elias-alvarez/null-ls.nvim')
use('MunifTanjim/prettier.nvim')
prettier.nvim
needs to be initialized with the require("prettier").setup()
function.
For example:
local null_ls = require("null-ls")
local prettier = require("prettier")
null_ls.setup({
on_attach = function(client, bufnr)
if client.resolved_capabilities.document_formatting then
vim.cmd("nnoremap <silent><buffer> <Leader>f :lua vim.lsp.buf.formatting()<CR>")
-- format on save
vim.cmd("autocmd BufWritePost <buffer> lua vim.lsp.buf.formatting()")
end
if client.resolved_capabilities.document_range_formatting then
vim.cmd("xnoremap <silent><buffer> <Leader>f :lua vim.lsp.buf.range_formatting({})<CR>")
end
end,
})
prettier.setup({
bin = 'prettier', -- or `prettierd`
filetypes = {
"css",
"graphql",
"html",
"javascript",
"javascriptreact",
"json",
"less",
"markdown",
"scss",
"typescript",
"typescriptreact",
"yaml",
},
-- prettier format options (you can use config files too. ex: `.prettierrc`)
arrow_parens = "always",
bracket_spacing = true,
embedded_language_formatting = "auto",
end_of_line = "lf",
html_whitespace_sensitivity = "css",
jsx_bracket_same_line = false,
jsx_single_quote = false,
print_width = 80,
prose_wrap = "preserve",
quote_props = "as-needed",
semi = true,
single_quote = false,
tab_width = 2,
trailing_comma = "es5",
use_tabs = false,
vue_indent_script_and_style = false,
})
You can also supply some options to null-ls
:
prettier.setup({
["null-ls"] = {
runtime_condition = function(params)
-- return false to skip running prettier
return true
end,
timeout = 5000,
}
})
Without LSP Setup:
If you don't want to do LSP setup, and just use Prettier:
" range_formatting in visual mode
xmap <Leader>f <Plug>(prettier-format)
" formatting in normal mode
nmap <Leader>f <Plug>(prettier-format)
You can also use the :Prettier
command.
Licensed under the MIT License. Check the LICENSE file for details.