114 lines
2.7 KiB
Lua
114 lines
2.7 KiB
Lua
LazyVim.on_very_lazy(function()
|
|
vim.filetype.add({
|
|
extension = { mdx = "markdown.mdx" },
|
|
})
|
|
end)
|
|
return {
|
|
recommended = function()
|
|
return LazyVim.extras.wants({
|
|
ft = { "markdown", "markdown.mdx" },
|
|
root = "README.md",
|
|
})
|
|
end,
|
|
{
|
|
"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("<!%-%- toc %-%->") then
|
|
return true
|
|
end
|
|
end
|
|
end,
|
|
},
|
|
},
|
|
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" } },
|
|
},
|
|
{
|
|
"nvimtools/none-ls.nvim",
|
|
optional = true,
|
|
opts = function(_, opts)
|
|
local nls = require("null-ls")
|
|
opts.sources = vim.list_extend(opts.sources or {}, {
|
|
nls.builtins.diagnostics.markdownlint_cli2,
|
|
})
|
|
end,
|
|
},
|
|
{
|
|
"mfussenegger/nvim-lint",
|
|
optional = true,
|
|
opts = {
|
|
linters_by_ft = {
|
|
markdown = { "markdownlint-cli2" },
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"neovim/nvim-lspconfig",
|
|
opts = {
|
|
servers = {
|
|
marksman = {},
|
|
},
|
|
},
|
|
},
|
|
|
|
-- Markdown preview
|
|
{
|
|
"iamcco/markdown-preview.nvim",
|
|
cmd = { "MarkdownPreviewToggle", "MarkdownPreview", "MarkdownPreviewStop" },
|
|
build = function()
|
|
vim.fn["mkdp#util#install"]()
|
|
end,
|
|
keys = {
|
|
{
|
|
"<leader>cp",
|
|
ft = "markdown",
|
|
"<cmd>MarkdownPreviewToggle<cr>",
|
|
desc = "Markdown Preview",
|
|
},
|
|
},
|
|
config = function()
|
|
vim.cmd([[do FileType]])
|
|
end,
|
|
},
|
|
|
|
{
|
|
"lukas-reineke/headlines.nvim",
|
|
opts = function()
|
|
local opts = {}
|
|
for _, ft in ipairs({ "markdown", "norg", "rmd", "org" }) do
|
|
opts[ft] = {
|
|
headline_highlights = {},
|
|
-- disable bullets for now. See https://github.com/lukas-reineke/headlines.nvim/issues/66
|
|
bullets = {},
|
|
}
|
|
for i = 1, 6 do
|
|
local hl = "Headline" .. i
|
|
vim.api.nvim_set_hl(0, hl, { link = "Headline", default = true })
|
|
table.insert(opts[ft].headline_highlights, hl)
|
|
end
|
|
end
|
|
return opts
|
|
end,
|
|
ft = { "markdown", "norg", "rmd", "org" },
|
|
config = function(_, opts)
|
|
-- PERF: schedule to prevent headlines slowing down opening a file
|
|
vim.schedule(function()
|
|
require("headlines").setup(opts)
|
|
require("headlines").refresh()
|
|
end)
|
|
end,
|
|
},
|
|
}
|