Files
NeoVim-config/lua/plugins/none-ls.lua
2025-08-31 17:59:46 +02:00

80 lines
2.3 KiB
Lua

return {
"nvimtools/none-ls.nvim",
dependencies = {
"nvimtools/none-ls-extras.nvim",
"jayp0521/mason-null-ls.nvim", -- ensure dependencies are installed
},
config = function()
local null_ls = require("null-ls")
local formatting = null_ls.builtins.formatting -- to setup formatters
local diagnostics = null_ls.builtins.diagnostics -- to setup linters
-- Formatters & linters for mason to install
require("mason-null-ls").setup({
ensure_installed = {
"prettier", -- ts/js formatter
"stylua", -- lua formatter
"eslint_d", -- ts/js linter
"shfmt", -- Shell formatter
"checkmake", -- linter for Makefiles
"ruff", -- Python linter and formatter
"clangd", -- c/cpp formatter and linter
"ocamlformat", -- ocaml formatter
},
automatic_installation = true,
})
local sources = {
diagnostics.checkmake,
formatting.prettier.with({ filetypes = { "html", "json", "yaml", "markdown" } }),
formatting.stylua,
formatting.shfmt.with({ args = { "-i", "4" } }),
formatting.terraform_fmt,
require("none-ls.formatting.ruff").with({
extra_args = { "--extend-select", "I" },
}),
require("none-ls.formatting.ruff_format"),
formatting.clang_format,
formatting.ocamlformat,
-- require("none-ls.formatting.ocamlformat").with({
-- extra_args = {
-- "--if-then-else",
-- "vertical",
-- "--break-cases",
-- "fit-or-vertical",
-- "--type-decl",
-- "sparse",
-- "--type-decl-indent",
-- "4",
-- "--function-indent",
-- "4",
-- "--match-indent",
-- "4",
-- "--let-binding-indent",
-- "4",
-- },
-- }),
}
local augroup = vim.api.nvim_create_augroup("LspFormatting", {})
null_ls.setup({
-- debug = true, -- Enable debug mode. Inspect logs with :NullLsLog.
sources = sources,
-- you can reuse a shared lspconfig on_attach callback here
on_attach = function(client, bufnr)
if client.supports_method("textDocument/formatting") then
vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr })
vim.api.nvim_create_autocmd("BufWritePre", {
group = augroup,
buffer = bufnr,
callback = function()
print("test")
vim.lsp.buf.format({ async = false })
end,
})
end
end,
})
end,
}