From cd0a2d4c3e346de0e596a740e9a05d114af2055e Mon Sep 17 00:00:00 2001 From: xesc Date: Wed, 4 Jun 2025 11:39:10 +0200 Subject: [PATCH] add markdown rendering --- lua/core/settings.lua | 2 +- lua/plugin/markdown.lua | 84 +++++++++++++++++++++++++++++++++++++++++ lua/plugin/obsidian.lua | 1 + 3 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 lua/plugin/markdown.lua diff --git a/lua/core/settings.lua b/lua/core/settings.lua index 18b9d69..7185950 100644 --- a/lua/core/settings.lua +++ b/lua/core/settings.lua @@ -22,7 +22,7 @@ vim.opt.shiftwidth = 2 vim.opt.expandtab = true -- enable foldcolumn -vim.wo.foldcolumn = "2" +vim.wo.foldcolumn = "auto:7" -- enable wrap vim.opt.wrap = true diff --git a/lua/plugin/markdown.lua b/lua/plugin/markdown.lua new file mode 100644 index 0000000..709ca52 --- /dev/null +++ b/lua/plugin/markdown.lua @@ -0,0 +1,84 @@ +return { + { + 'MeanderingProgrammer/render-markdown.nvim', + -- dependencies = { 'nvim-treesitter/nvim-treesitter', 'echasnovski/mini.nvim' }, -- if you use the mini.nvim suite + -- dependencies = { 'nvim-treesitter/nvim-treesitter', 'echasnovski/mini.icons' }, -- if you use standalone mini plugins + dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-tree/nvim-web-devicons' }, -- if you prefer nvim-web-devicons + lazy = true, + ft = "markdown", + opts = { + completions = { lsp = { enabled = true } }, + preset = 'obsidian', + heading = { + backgrounds = {}, + position = 'inline', + }, + checkbox = { + enabled = true, + render_modes = false, + bullet = false, + right_pad = 1, + unchecked = { + icon = '󰄱 ', + highlight = 'RenderMarkdownUnchecked', + scope_highlight = nil, + }, + checked = { + icon = '󰱒 ', + highlight = 'RenderMarkdownChecked', + scope_highlight = nil, + }, + custom = { + todo = { raw = '[>]', rendered = '󰥔 ', highlight = 'RenderMarkdownInfo', scope_highlight = nil }, + urgent = { raw = '[!]', rendered = ' ', highlight = 'RenderMarkdownError', scope_highlight = nil }, + important = { raw = '[~]', rendered = '󰓎 ', highlight = 'DiagnosticWarn', }, + }, + }, + pipe_table = { + preset = 'round', + head = 'RenderMarkdownTableRow', + }, + code = { + border = 'thick', + width = 'block', + left_pad = 2, + min_width = 40, + }, + callout = { + -- Callouts are a special instance of a 'block_quote' that start with a 'shortcut_link'. + -- The key is for healthcheck and to allow users to change its values, value type below. + -- | raw | matched against the raw text of a 'shortcut_link', case insensitive | + -- | rendered | replaces the 'raw' value when rendering | + -- | highlight | highlight for the 'rendered' text and quote markers | + -- | quote_icon | optional override for quote.icon value for individual callout | + -- | category | optional metadata useful for filtering | + + -- Obsidian: https://help.obsidian.md/Editing+and+formatting/Callouts + abstract = { raw = '[!ABSTRACT]', rendered = '󰨸 Abstract', highlight = 'RenderMarkdownInfo', category = 'obsidian' }, + summary = { raw = '[!SUMMARY]', rendered = '󰨸 Summary', highlight = 'RenderMarkdownInfo', category = 'obsidian' }, + tldr = { raw = '[!TLDR]', rendered = '󰨸 Tldr', highlight = 'RenderMarkdownInfo', category = 'obsidian' }, + info = { raw = '[!INFO]', rendered = '󰋽 Info', highlight = 'RenderMarkdownInfo', category = 'obsidian' }, + todo = { raw = '[!TODO]', rendered = '󰗡 Todo', highlight = 'RenderMarkdownInfo', category = 'obsidian' }, + hint = { raw = '[!HINT]', rendered = '󰌶 Hint', highlight = 'RenderMarkdownSuccess', category = 'obsidian' }, + success = { raw = '[!SUCCESS]', rendered = '󰄬 Success', highlight = 'RenderMarkdownSuccess', category = 'obsidian' }, + check = { raw = '[!CHECK]', rendered = '󰄬 Check', highlight = 'RenderMarkdownSuccess', category = 'obsidian' }, + done = { raw = '[!DONE]', rendered = '󰄬 Done', highlight = 'RenderMarkdownSuccess', category = 'obsidian' }, + question = { raw = '[!QUESTION]', rendered = '󰘥 Question', highlight = 'RenderMarkdownWarn', category = 'obsidian' }, + help = { raw = '[!HELP]', rendered = '󰘥 Help', highlight = 'RenderMarkdownWarn', category = 'obsidian' }, + faq = { raw = '[!FAQ]', rendered = '󰘥 Faq', highlight = 'RenderMarkdownWarn', category = 'obsidian' }, + attention = { raw = '[!ATTENTION]', rendered = '󰀪 Attention', highlight = 'RenderMarkdownWarn', category = 'obsidian' }, + failure = { raw = '[!FAILURE]', rendered = '󰅖 Failure', highlight = 'RenderMarkdownError', category = 'obsidian' }, + fail = { raw = '[!FAIL]', rendered = '󰅖 Fail', highlight = 'RenderMarkdownError', category = 'obsidian' }, + missing = { raw = '[!MISSING]', rendered = '󰅖 Missing', highlight = 'RenderMarkdownError', category = 'obsidian' }, + danger = { raw = '[!DANGER]', rendered = '󱐌 Danger', highlight = 'RenderMarkdownError', category = 'obsidian' }, + error = { raw = '[!ERROR]', rendered = '󱐌 Error', highlight = 'RenderMarkdownError', category = 'obsidian' }, + bug = { raw = '[!BUG]', rendered = '󰨰 Bug', highlight = 'RenderMarkdownError', category = 'obsidian' }, + example = { raw = '[!EXAMPLE]', rendered = '󰉹 Example', highlight = 'RenderMarkdownHint', category = 'obsidian' }, + quote = { raw = '[!QUOTE]', rendered = '󱆨 Quote', highlight = 'RenderMarkdownQuote', category = 'obsidian' }, + cite = { raw = '[!CITE]', rendered = '󱆨 Cite', highlight = 'RenderMarkdownQuote', category = 'obsidian' }, + }, + + + }, + } +} diff --git a/lua/plugin/obsidian.lua b/lua/plugin/obsidian.lua index e6ee5bd..57446ac 100644 --- a/lua/plugin/obsidian.lua +++ b/lua/plugin/obsidian.lua @@ -110,6 +110,7 @@ return { -- You can always override this per image by passing a full path to the command instead of just a filename. img_folder = "images", -- This is the default }, + ui = { enable = false}, }, } }