diff --git a/after/plugin/prettier.lua b/after/plugin/prettier.lua new file mode 100644 index 00000000..2d55ce7a --- /dev/null +++ b/after/plugin/prettier.lua @@ -0,0 +1,54 @@ +local null_ls = require("null-ls") + +null_ls.setup({ + on_attach = function(client, bufnr) + if client.supports_method("textDocument/formatting") then + vim.keymap.set("n", "f", function() + vim.lsp.buf.format({ bufnr = vim.api.nvim_get_current_buf() }) + end, { buffer = bufnr, desc = "[lsp] format" }) + + -- uncomment to enable format on save + --[[ + local group = vim.api.nvim_create_augroup("lsp_format_on_save", { clear = false }) + local event = "BufWritePre" -- or "BufWritePost" + local async = event == "BufWritePost" + + vim.api.nvim_clear_autocmds({ buffer = bufnr, group = group }) + vim.api.nvim_create_autocmd(event, { + buffer = bufnr, + group = group, + callback = function() + vim.lsp.buf.format({ bufnr = bufnr, async = async }) + end, + desc = "[lsp] format on save", + }) + ]] + end + + if client.supports_method("textDocument/rangeFormatting") then + vim.keymap.set("x", "f", function() + vim.lsp.buf.format({ bufnr = vim.api.nvim_get_current_buf() }) + end, { buffer = bufnr, desc = "[lsp] format" }) + end + end, +}) + +local prettier = require("prettier") + +prettier.setup({ + bin = 'prettier', -- or `'prettierd'` (v0.22+) + filetypes = { + "css", + "graphql", + "html", + "javascript", + "javascriptreact", + "json", + "less", + "markdown", + "scss", + "typescript", + "typescriptreact", + "yaml", + }, +}) diff --git a/lua/theprimeagen/packer.lua b/lua/theprimeagen/packer.lua index 96f7c6e1..87dec220 100644 --- a/lua/theprimeagen/packer.lua +++ b/lua/theprimeagen/packer.lua @@ -66,6 +66,10 @@ return require('packer').startup(function(use) -- Snippets {'L3MON4D3/LuaSnip'}, {'rafamadriz/friendly-snippets'}, + + -- prettier format + {'jose-elias-alvarez/null-ls.nvim'}, + {'MunifTanjim/prettier.nvim'}, } }