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" }, event = { "BufWritePre" },
opts = { opts = {
formatters_by_ft = { 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 }, 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 }, zsh = { "shfmt", "shellharden", stop_after_first = true },
["_"] = { "trim_whitespace" }, ["_"] = { "trim_whitespace" },
}, },

View File

@@ -219,21 +219,27 @@ return {
-- Add completion capabilities -- Add completion capabilities
local capabilities = vim.lsp.protocol.make_client_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 {}) local ensure_installed = vim.tbl_keys(servers or {})
vim.list_extend(ensure_installed, { vim.list_extend(ensure_installed, {
"stylua", "black", -- Python formatter
"bash-language-server", "csharpier", -- C# formatter
"html-lsp", "djlint", -- Handlebar Formatter
"css-lsp",
"dockerfile-language-server",
"python-lsp-server",
"markdownlint",
"markdown-toc", "markdown-toc",
"csharpier", "markdownlint",
"netcoredbg", "netcoredbg", -- C# Debugger
"prettier",
"prettierd",
"shellharden",
"shfmt",
"stylua",
"trivy", -- Vulnerability Linter
"yamlfmt",
}) })
-- TODO: Remove all installations through Mason -- TODO: Remove all installations through Mason