165 lines
4.6 KiB
Lua
165 lines
4.6 KiB
Lua
-- ============================================================================
|
|
-- RENDER-MARKDOWN: Beautiful markdown rendering in Neovim
|
|
-- ============================================================================
|
|
-- Renders markdown files with enhanced visual elements including styled
|
|
-- headings, code blocks with syntax highlighting, bullet points, checkboxes,
|
|
-- tables, blockquotes, callouts (NOTE/TIP/WARNING), and links with icons.
|
|
-- Uses conceal and virtual text for a clean, readable document appearance.
|
|
-- Supports markdown, norg, rmd, and org filetypes.
|
|
-- ============================================================================
|
|
|
|
return {
|
|
"MeanderingProgrammer/render-markdown.nvim",
|
|
dependencies = {
|
|
"nvim-treesitter/nvim-treesitter",
|
|
"nvim-tree/nvim-web-devicons",
|
|
},
|
|
ft = { "markdown", "norg", "rmd", "org" },
|
|
opts = {
|
|
enabled = true,
|
|
max_file_size = 10.0, -- MB
|
|
render_modes = { "n", "c" },
|
|
anti_conceal = {
|
|
enabled = true,
|
|
ignore = {
|
|
code_background = true,
|
|
sign = true,
|
|
},
|
|
},
|
|
heading = {
|
|
enabled = true,
|
|
sign = true,
|
|
position = "overlay",
|
|
icons = { " ", " ", " ", " ", " ", " " },
|
|
signs = { " " },
|
|
width = "full",
|
|
left_pad = 0,
|
|
right_pad = 0,
|
|
min_width = 0,
|
|
border = false,
|
|
border_prefix = false,
|
|
above = "▄",
|
|
below = "▀",
|
|
backgrounds = {
|
|
"RenderMarkdownH1Bg",
|
|
"RenderMarkdownH2Bg",
|
|
"RenderMarkdownH3Bg",
|
|
"RenderMarkdownH4Bg",
|
|
"RenderMarkdownH5Bg",
|
|
"RenderMarkdownH6Bg",
|
|
},
|
|
foregrounds = {
|
|
"RenderMarkdownH1",
|
|
"RenderMarkdownH2",
|
|
"RenderMarkdownH3",
|
|
"RenderMarkdownH4",
|
|
"RenderMarkdownH5",
|
|
"RenderMarkdownH6",
|
|
},
|
|
},
|
|
code = {
|
|
enabled = true,
|
|
sign = true,
|
|
style = "full",
|
|
position = "left",
|
|
language_pad = 0,
|
|
disable_background = { "diff" },
|
|
width = "full",
|
|
left_pad = 0,
|
|
right_pad = 0,
|
|
min_width = 0,
|
|
border = "thin",
|
|
above = "▄",
|
|
below = "▀",
|
|
highlight = "RenderMarkdownCode",
|
|
highlight_inline = "RenderMarkdownCodeInline",
|
|
},
|
|
dash = {
|
|
enabled = true,
|
|
icon = "─",
|
|
width = "full",
|
|
highlight = "RenderMarkdownDash",
|
|
},
|
|
bullet = {
|
|
enabled = true,
|
|
icons = { "●", "○", "◆", "◇" },
|
|
left_pad = 0,
|
|
right_pad = 0,
|
|
highlight = "RenderMarkdownBullet",
|
|
},
|
|
checkbox = {
|
|
enabled = true,
|
|
position = "inline",
|
|
unchecked = {
|
|
icon = " ",
|
|
highlight = "RenderMarkdownUnchecked",
|
|
},
|
|
checked = {
|
|
icon = " ",
|
|
highlight = "RenderMarkdownChecked",
|
|
},
|
|
custom = {
|
|
todo = { raw = "[-]", rendered = " ", highlight = "RenderMarkdownTodo" },
|
|
},
|
|
},
|
|
quote = {
|
|
enabled = true,
|
|
icon = "▋",
|
|
repeat_linebreak = false,
|
|
highlight = "RenderMarkdownQuote",
|
|
},
|
|
pipe_table = {
|
|
enabled = true,
|
|
preset = "heavy",
|
|
style = "full",
|
|
cell = "padded",
|
|
min_width = 0,
|
|
border = {
|
|
"┏", "┳", "┓",
|
|
"┣", "╋", "┫",
|
|
"┗", "┻", "┛",
|
|
"┃", "━",
|
|
},
|
|
alignment_indicator = "━",
|
|
head = "RenderMarkdownTableHead",
|
|
row = "RenderMarkdownTableRow",
|
|
filler = "RenderMarkdownTableFill",
|
|
},
|
|
callout = {
|
|
note = { raw = "[!NOTE]", rendered = " Note", highlight = "RenderMarkdownInfo" },
|
|
tip = { raw = "[!TIP]", rendered = " Tip", highlight = "RenderMarkdownSuccess" },
|
|
important = { raw = "[!IMPORTANT]", rendered = " Important", highlight = "RenderMarkdownHint" },
|
|
warning = { raw = "[!WARNING]", rendered = " Warning", highlight = "RenderMarkdownWarn" },
|
|
caution = { raw = "[!CAUTION]", rendered = " Caution", highlight = "RenderMarkdownError" },
|
|
},
|
|
link = {
|
|
enabled = true,
|
|
image = " ",
|
|
email = " ",
|
|
hyperlink = " ",
|
|
highlight = "RenderMarkdownLink",
|
|
custom = {
|
|
web = { pattern = "^http[s]?://", icon = " ", highlight = "RenderMarkdownLink" },
|
|
},
|
|
},
|
|
sign = {
|
|
enabled = true,
|
|
highlight = "RenderMarkdownSign",
|
|
},
|
|
indent = {
|
|
enabled = false,
|
|
per_level = 2,
|
|
},
|
|
win_options = {
|
|
conceallevel = {
|
|
default = vim.api.nvim_get_option_value("conceallevel", {}),
|
|
rendered = 3,
|
|
},
|
|
concealcursor = {
|
|
default = vim.api.nvim_get_option_value("concealcursor", {}),
|
|
rendered = "",
|
|
},
|
|
},
|
|
},
|
|
}
|