local augroup = vim.api.nvim_create_augroup("LspFormatting",{})
local null_ls = require("null-ls")

null_ls.setup({
    sources = {
        null_ls.builtins.formatting.rustfmt,
        null_ls.builtins.formatting.blue,
        null_ls.builtins.formatting.gofmt,
        null_ls.builtins.code_actions.shellcheck,
        null_ls.builtins.formatting.beautysh,
        null_ls.builtins.formatting.prettierd.with({
            filetypes = { "html", "json", "css", "js", "yaml", "markdown" },
        }),
    },
    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,
})
