summary refs log tree commit diff
path: root/.config/nvim/lua/plugins/markdown.lua
diff options
context:
space:
mode:
authorRobert Günzler <r@gnzler.io>2026-02-10 12:32:48 +0100
committerRobert Günzler <r@gnzler.io>2026-02-10 12:41:25 +0100
commit63feeb9f369fc6176e85c1c2d8fcc863caad1946 (patch)
tree41cd5d2d1ec36e74e464caab722cc9b460153f04 /.config/nvim/lua/plugins/markdown.lua
parent5bd0a4aca65ecb9818ef1285982d160b6b6ff665 (diff)
start new
Signed-off-by: Robert Günzler <r@gnzler.io>
Diffstat (limited to '.config/nvim/lua/plugins/markdown.lua')
-rw-r--r--.config/nvim/lua/plugins/markdown.lua82
1 files changed, 82 insertions, 0 deletions
diff --git a/.config/nvim/lua/plugins/markdown.lua b/.config/nvim/lua/plugins/markdown.lua
new file mode 100644
index 0000000..b21255e
--- /dev/null
+++ b/.config/nvim/lua/plugins/markdown.lua
@@ -0,0 +1,82 @@
+return {
+  {
+    -- handy markdown commands
+    'tadmccorkle/markdown.nvim',
+    ft = { 'markdown' },
+    opts = {
+      mappings = false,
+      on_attach = function(buf)
+        local set = function(mode, lhs, rhs, desc)
+          vim.keymap.set(mode, lhs, rhs, { buffer = buf, desc = 'Markdown: ' .. desc })
+        end
+        set('n', 'nio', '<cmd>MDListItemBelow<cr>', 'Insert list item below')
+        set('n', 'niO', '<cmd>MDListItemAbove<cr>', 'Insert list item above')
+        set({ 'n', 'v', 'x', 'i' }, '<m-x>', '<cmd>MDTaskToggle<cr>', 'Toggle task')
+        set('x', '<m-l>', '<esc>gv<plug>(markdown_add_link_visual)', 'Make link')
+      end,
+    },
+  },
+  {
+    -- pretty markdown
+    'MeanderingProgrammer/markdown.nvim',
+    name = 'render-markdown', -- needed if used together with markdown.nvim above
+    main = 'render-markdown',
+    dependencies = {
+      'nvim-treesitter/nvim-treesitter',
+      'echasnovski/mini.icons',
+    },
+    ft = { 'markdown' },
+    opts = {
+      completions = { blink = { enabled = true } },
+      sign = { enabled = true },
+      indent = { enabled = false },
+      heading = {
+        width = 'block',
+        icons = {
+          '▒ ',
+          '▒▒ ',
+          '▒▒▒ ',
+          '▒▒▒▒ ',
+          '▒▒▒▒▒ ',
+          '▒▒▒▒▒▒ ',
+        },
+        signs = { 'ⅰ', 'ⅱ', 'ⅲ', 'ⅳ', 'ⅴ', 'ⅵ' },
+        backgrounds = {},
+        foregrounds = {},
+      },
+      bullet = {
+        icons = { '* ', '-', '>' },
+      },
+      checkbox = {
+        checked = { icon = '  󰄲 ' },
+        unchecked = { icon = '  󰄱 ' },
+        custom = {
+          todo = { raw = '[-]', rendered = '  󰔟 ', highlight = 'RenderMarkdownTodo' },
+        },
+      },
+      code = {
+        width = 'block',
+        border = 'thin',
+        disable_background = true,
+      },
+    },
+    init = vim.schedule_wrap(function()
+      local hl = vim.api.nvim_set_hl
+      hl(0, '@markup.bold', { link = 'markdownBold', force = true })
+      hl(0, '@markup.italic', { link = 'markdownItalic', force = true })
+
+      -- hl(0, 'RenderMarkdownH1', { fg = 'NvimLightCyan' })
+      -- hl(0, 'RenderMarkdownH1Bg', { bg = 'NvimDarkCyan' })
+      -- hl(0, 'RenderMarkdownH2', { fg = 'NvimLightMagenta' })
+      -- hl(0, 'RenderMarkdownH2Bg', { bg = 'NvimDarkMagenta' })
+      -- hl(0, 'RenderMarkdownH3', { fg = 'NvimLightYellow' })
+      -- hl(0, 'RenderMarkdownH3Bg', { bg = 'NvimDarkYellow' })
+      -- hl(0, 'RenderMarkdownH4', { fg = 'NvimLightBlue' })
+      -- hl(0, 'RenderMarkdownH4Bg', { bg = 'NvimDarkBlue' })
+      -- hl(0, 'RenderMarkdownH5', { fg = 'NvimLightRed' })
+      -- hl(0, 'RenderMarkdownH5Bg', { bg = 'NvimDarkRed' })
+
+      hl(0, 'RenderMarkdownBullet', { link = '@markup.list', force = true })
+    end),
+  },
+}