feat(nvim-formatting): Auto install required formatters through mason

- Sort configurations by ft
- Add formatters to lsp so they can be auto installed by mason
This commit is contained in:
Pratik Tripathy
2025-03-31 11:39:06 +05:30
parent 29a2f349d7
commit 05fabaf997
2 changed files with 33 additions and 26 deletions

View File

@@ -6,22 +6,23 @@ return {
event = { "BufWritePre" },
opts = {
formatters_by_ft = {
cs = { "csharpier" },
javascript = { "prettierd", "prettier", stop_after_first = true },
typescript = { "prettierd", "prettier", stop_after_first = true },
javascriptreact = { "prettierd", "prettier", stop_after_first = true },
typescriptreact = { "prettierd", "prettier", stop_after_first = true },
svelte = { "prettierd", "prettier", stop_after_first = true },
css = { "prettierd", "prettier", stop_after_first = true },
html = { "prettierd", "prettier", stop_after_first = true },
json = { "prettierd", "prettier", stop_after_first = true },
graphql = { "prettierd", "prettier", stop_after_first = true },
yaml = { "yamlfmt", "prettierd", stop_after_first = true },
markdown = { "markdownlint", "markdown-toc" },
lua = { "stylua" },
python = { "black" },
sh = { "shfmt", "shellharden", stop_after_first = true },
bash = { "shfmt", "shellharden", stop_after_first = true },
cs = { "csharpier" },
css = { "prettierd", "prettier", stop_after_first = true },
graphql = { "prettierd", "prettier", stop_after_first = true },
html = { "prettierd", "prettier", stop_after_first = true },
javascript = { "prettierd", "prettier", stop_after_first = true },
javascriptreact = { "prettierd", "prettier", stop_after_first = true },
json = { "prettierd", "prettier", stop_after_first = true },
lua = { "stylua" },
markdown = { "markdownlint", "markdown-toc" },
python = { "black" },
rust = { "rustfmt" },
sh = { "shfmt", "shellharden", stop_after_first = true },
svelte = { "prettierd", "prettier", stop_after_first = true },
typescript = { "prettierd", "prettier", stop_after_first = true },
typescriptreact = { "prettierd", "prettier", stop_after_first = true },
yaml = { "yamlfmt", "prettierd", stop_after_first = true },
zsh = { "shfmt", "shellharden", stop_after_first = true },
["_"] = { "trim_whitespace" },
},

View File

@@ -219,21 +219,27 @@ return {
-- Add completion capabilities
local capabilities = vim.lsp.protocol.make_client_capabilities()
capabilities = vim.tbl_deep_extend("force", capabilities, require("blink.cmp").get_lsp_capabilities())
-- Add other tools here that you want Mason to install for you
-- TODO: Remove this when we get neovim 0.11
capabilities = require("blink.cmp").get_lsp_capabilities(capabilities)
-- Add other (other than LSP servers) tools here that you want Mason to install for you
-- Which means: formatters and debuggers
local ensure_installed = vim.tbl_keys(servers or {})
vim.list_extend(ensure_installed, {
"stylua",
"bash-language-server",
"html-lsp",
"css-lsp",
"dockerfile-language-server",
"python-lsp-server",
"markdownlint",
"black", -- Python formatter
"csharpier", -- C# formatter
"djlint", -- Handlebar Formatter
"markdown-toc",
"csharpier",
"netcoredbg",
"markdownlint",
"netcoredbg", -- C# Debugger
"prettier",
"prettierd",
"shellharden",
"shfmt",
"stylua",
"trivy", -- Vulnerability Linter
"yamlfmt",
})
-- TODO: Remove all installations through Mason