diff --git a/nvim/lua/plugins/formatting.lua b/nvim/lua/plugins/formatting.lua new file mode 100644 index 0000000..2a1d11e --- /dev/null +++ b/nvim/lua/plugins/formatting.lua @@ -0,0 +1,45 @@ +-- Lightweight yet powerful formatter plugin for Neovim +-- https://github.com/stevearc/conform.nvim +return { + "stevearc/conform.nvim", + event = { "BufWritePre", "BufNewFile" }, + keys = { + { + "mp", + mode = { "n", "v" }, + function() + require("conform").format({ + lsp_fallback = true, + async = false, + timeout_ms = 500, + }) + end, + desc = "Format file or range (in visual mode)", + }, + }, + opts = { + formatters = { + eslint_d = { + command = "eslint_d", + args = { "--fix-to-stdout", "--stdin", "--stdin-filename", "$FILENAME" }, + stdin = true, + }, + }, + formatters_by_ft = { + astro = { "prettier" }, + css = { "prettier" }, + graphql = { "prettier" }, + html = { "prettier" }, + javascript = { "prettier", "eslint_d" }, + javascriptreact = { "prettier", "eslint_d" }, + json = { "prettier" }, + lua = { "stylua" }, + markdown = { "prettier" }, + svelte = { "prettier" }, + typescript = { "prettier", "eslint_d" }, + typescriptreact = { "prettier", "eslint_d" }, + yaml = { "prettier" }, + python = { "isort", "black" }, + }, + }, +} diff --git a/nvim/lua/plugins/mason.lua b/nvim/lua/plugins/mason.lua index 6d96c2d..c504dde 100644 --- a/nvim/lua/plugins/mason.lua +++ b/nvim/lua/plugins/mason.lua @@ -5,6 +5,7 @@ return { opts = { ensure_installed = { "astro-language-server", + "black", "cspell", "css-lsp", "cssmodules-language-server", @@ -13,6 +14,7 @@ return { "eslint-lsp", "eslint_d", "html-lsp", + "isort", "json-lsp", "lua-language-server", "prettier",