return { { "stevearc/conform.nvim", optional = true, opts = { formatters = { ["markdown-toc"] = { condition = function(_, ctx) for _, line in ipairs(vim.api.nvim_buf_get_lines(ctx.buf, 0, -1, false)) do if line:find("") then return true end end end, }, ["markdownlint-cli2"] = { condition = function(_, ctx) local diag = vim.tbl_filter(function(d) return d.source == "markdownlint" end, vim.diagnostic.get(ctx.buf)) return #diag > 0 end, }, prettier = { prepend_args = { "--prose-wrap", "preserve" }, }, }, formatters_by_ft = { ["markdown"] = { "prettier", "markdownlint-cli2", "markdown-toc" }, ["markdown.mdx"] = { "prettier", "markdownlint-cli2", "markdown-toc" }, }, }, }, { "williamboman/mason.nvim", opts = { ensure_installed = { "markdownlint-cli2", "markdown-toc" } }, }, }