return { { "OXY2DEV/markview.nvim", lazy = false, ft = "markdown", dependencies = { "nvim-treesitter/nvim-treesitter", "nvim-tree/nvim-web-devicons", }, config = function() local presets = require("markview.presets") require("markview").setup({ modes = { "n", "no", "c" }, hybrid_modes = { "n" }, callbacks = { on_enable = function(_, win) vim.wo[win].conceallevel = 2 vim.wo[win].concealcursor = "" end, }, -- Glow headings preset headings = presets.headings.glow, -- Code blocks configuration code_blocks = { enable = true, style = "language", position = "overlay", min_width = 60, pad_amount = 2, pad_char = " ", language_names = { { "py", "python" }, { "cpp", "C++" }, { "js", "javascript" }, { "ts", "typescript" }, { "sh", "bash" }, }, hl = "MarkviewCode", sign = true, sign_hl = "MarkviewCodeSign", }, -- Block quotes configuration block_quotes = { enable = true, default = { border = "▋", border_hl = "MarkviewBlockQuoteBorder", }, callouts = { { match_string = "NOTE", callout_preview = "󰋽 Note", callout_preview_hl = "MarkviewBlockQuoteNote", border = "▋", border_hl = "MarkviewBlockQuoteNote", }, { match_string = "TIP", callout_preview = "󰌶 Tip", callout_preview_hl = "MarkviewBlockQuoteTip", border = "▋", border_hl = "MarkviewBlockQuoteTip", }, { match_string = "IMPORTANT", callout_preview = " Important", callout_preview_hl = "MarkviewBlockQuoteImportant", border = "▋", border_hl = "MarkviewBlockQuoteImportant", }, { match_string = "WARNING", callout_preview = " Warning", callout_preview_hl = "MarkviewBlockQuoteWarn", border = "▋", border_hl = "MarkviewBlockQuoteWarn", }, { match_string = "CAUTION", callout_preview = " Caution", callout_preview_hl = "MarkviewBlockQuoteError", border = "▋", border_hl = "MarkviewBlockQuoteError", }, }, }, -- Checkboxes configuration checkboxes = { enable = true, checked = { text = "✓", hl = "MarkviewCheckboxChecked", scope_hl = nil, }, unchecked = { text = "☐", hl = "MarkviewCheckboxUnchecked", scope_hl = nil, }, custom = { { match_string = "!", text = "!", hl = "MarkviewCheckboxImportant", scope_hl = nil, }, { match_string = "-", text = "◐", hl = "MarkviewCheckboxPending", scope_hl = nil, }, { match_string = "~", text = "≈", hl = "MarkviewCheckboxProgress", scope_hl = nil, }, }, }, -- Tables with rounded borders tables = { enable = true, parts = { top = { "╭", "─", "┬", "─", "╮" }, header = { "├", "─", "┼", "─", "┤" }, separator = { "├", "─", "┼", "─", "┤" }, row = { "│", " ", "│", " ", "│" }, bottom = { "╰", "─", "┴", "─", "╯" }, overlap = { "┼" }, }, hl = { "MarkviewTableHeader", "MarkviewTableBorder", "MarkviewTableBorder", "MarkviewTableBorder", "MarkviewTableBorder", }, use_virt_lines = true, }, -- List items list_items = { enable = true, indent_size = 2, shift_width = 2, marker_minus = { add_padding = true, text = "•", hl = "MarkviewListItemMinus", }, marker_plus = { add_padding = true, text = "•", hl = "MarkviewListItemPlus", }, marker_star = { add_padding = true, text = "•", hl = "MarkviewListItemStar", }, }, }) -- Catppuccin Mocha colors vim.cmd([[ " Code blocks - Catppuccin Mocha highlight MarkviewCode guibg=#181825 highlight MarkviewCodeSign guifg=#89b4fa " Block quotes - Catppuccin Mocha highlight MarkviewBlockQuoteBorder guifg=#6c7086 highlight MarkviewBlockQuoteNote guifg=#89b4fa highlight MarkviewBlockQuoteTip guifg=#a6e3a1 highlight MarkviewBlockQuoteImportant guifg=#cba6f7 highlight MarkviewBlockQuoteWarn guifg=#fab387 highlight MarkviewBlockQuoteError guifg=#f38ba8 " Checkboxes - Catppuccin Mocha highlight MarkviewCheckboxChecked guifg=#a6e3a1 highlight MarkviewCheckboxUnchecked guifg=#6c7086 highlight MarkviewCheckboxImportant guifg=#f38ba8 gui=bold highlight MarkviewCheckboxPending guifg=#fab387 highlight MarkviewCheckboxProgress guifg=#89b4fa " List items - Catppuccin Mocha highlight MarkviewListItemMinus guifg=#89b4fa highlight MarkviewListItemPlus guifg=#a6e3a1 highlight MarkviewListItemStar guifg=#cba6f7 " Tables - Catppuccin Mocha highlight MarkviewTableHeader guifg=#cba6f7 gui=bold highlight MarkviewTableBorder guifg=#6c7086 ]]) -- Setup checkbox toggle extras require("markview.extras.checkboxes").setup({ default = "X", remove_markers = false, exit = true, default_marker = "-", default_state = "X", }) -- Keymaps vim.keymap.set("n", "mt", "Markview toggle", { desc = "Toggle Markview" }) vim.keymap.set("n", "ch", "Checkboxes toggle", { desc = "Toggle checkbox" }) end, }, }