local null_ls = require "null-ls" local augroup = vim.api.nvim_create_augroup("LspFormatting", {}) local b = null_ls.builtins local sources = { -- cpp b.formatting.clang_format, -- Lua b.formatting.stylua, -- python b.code_actions.refactoring, b.diagnostics.mypy, b.diagnostics.ruff, b.diagnostics.vulture, b.formatting.black, -- b.formatting.pyflyby, -- b.formatting.reorder_python_imports, -- webdev stuff b.formatting.deno_fmt, -- choosed deno for ts/js files cuz its very fast! b.formatting.prettier.with { filetypes = { "html", "markdown", "css" } }, -- so prettier works only on these filetypes } null_ls.setup { debug = true, sources = sources, 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() vim.lsp.buf.format { bufnr = bufnr } end, }) end end, }