2023-10-14 17:42:02 +02:00
|
|
|
return {
|
|
|
|
{
|
|
|
|
"nvim-treesitter/nvim-treesitter",
|
|
|
|
opts = function(_, opts)
|
|
|
|
if type(opts.ensure_installed) == "table" then
|
|
|
|
vim.list_extend(opts.ensure_installed, { "markdown", "markdown_inline" })
|
|
|
|
end
|
|
|
|
end,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"williamboman/mason.nvim",
|
|
|
|
opts = function(_, opts)
|
|
|
|
opts.ensure_installed = opts.ensure_installed or {}
|
2023-10-16 12:44:41 +02:00
|
|
|
vim.list_extend(opts.ensure_installed, { "markdownlint", "marksman" })
|
2023-10-14 17:42:02 +02:00
|
|
|
end,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"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,
|
|
|
|
})
|
|
|
|
end,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"mfussenegger/nvim-lint",
|
|
|
|
optional = true,
|
|
|
|
opts = {
|
|
|
|
linters_by_ft = {
|
|
|
|
markdown = { "markdownlint" },
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"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>",
|
2023-10-15 01:21:17 -04:00
|
|
|
desc = "Markdown Preview",
|
2023-10-14 17:42:02 +02:00
|
|
|
},
|
|
|
|
},
|
|
|
|
config = function()
|
|
|
|
vim.cmd([[do FileType]])
|
|
|
|
end,
|
|
|
|
},
|
2023-10-16 08:36:27 +02:00
|
|
|
|
|
|
|
{
|
|
|
|
"lukas-reineke/headlines.nvim",
|
|
|
|
opts = function()
|
|
|
|
local opts = {}
|
|
|
|
for _, ft in ipairs({ "markdown", "norg", "rmd", "org" }) do
|
2023-10-25 14:23:36 +02:00
|
|
|
opts[ft] = {
|
|
|
|
headline_highlights = {},
|
|
|
|
}
|
2023-10-16 08:36:27 +02:00
|
|
|
for i = 1, 6 do
|
2023-10-25 14:23:36 +02:00
|
|
|
local hl = "Headline" .. i
|
|
|
|
vim.api.nvim_set_hl(0, hl, { link = "Headline", default = true })
|
|
|
|
table.insert(opts[ft].headline_highlights, hl)
|
2023-10-16 08:36:27 +02:00
|
|
|
end
|
|
|
|
end
|
|
|
|
return opts
|
|
|
|
end,
|
|
|
|
ft = { "markdown", "norg", "rmd", "org" },
|
2023-10-25 15:40:57 +02:00
|
|
|
config = function(_, opts)
|
|
|
|
-- PERF: schedule to prevent headlines slowing down opening a file
|
|
|
|
vim.schedule(function()
|
2024-03-14 16:39:23 +01:00
|
|
|
local hl = require("headlines")
|
|
|
|
hl.setup(opts)
|
|
|
|
local md = hl.config.markdown
|
|
|
|
hl.refresh()
|
|
|
|
|
|
|
|
-- Toggle markdown headlines on insert enter/leave
|
|
|
|
vim.api.nvim_create_autocmd({ "InsertEnter", "InsertLeave" }, {
|
|
|
|
callback = function(data)
|
|
|
|
if vim.bo.filetype == "markdown" then
|
|
|
|
hl.config.markdown = data.event == "InsertLeave" and md or nil
|
|
|
|
hl.refresh()
|
|
|
|
end
|
|
|
|
end,
|
|
|
|
})
|
2023-10-25 15:40:57 +02:00
|
|
|
end)
|
|
|
|
end,
|
2023-10-16 08:36:27 +02:00
|
|
|
},
|
2023-10-14 17:42:02 +02:00
|
|
|
}
|