From: Andrew Date: Sat, 30 Aug 2025 22:14:23 +0000 (-0400) Subject: inline markdown rendering X-Git-Url: http://git.skullheadx.com/nixos/static/git-logo.png?a=commitdiff_plain;h=0114f5320fb6bebc4509469f1b0c8f3ffd87a235;p=nixos.git inline markdown rendering --- diff --git a/flake.lock b/flake.lock index a186a73..8a508a0 100644 --- a/flake.lock +++ b/flake.lock @@ -181,11 +181,11 @@ ] }, "locked": { - "lastModified": 1756022458, - "narHash": "sha256-J1i35r4HfNDdPpwL0vOBaZopQudAUVtartEerc1Jryc=", + "lastModified": 1756496801, + "narHash": "sha256-IYIsnPy+cJxe8RbDHBrCtfJY0ry2bG2H7WvMcewiGS8=", "owner": "nix-community", "repo": "home-manager", - "rev": "9e3a33c0bcbc25619e540b9dfea372282f8a9740", + "rev": "77a71380c38fb2a440b4b5881bbc839f6230e1cb", "type": "github" }, "original": { @@ -211,11 +211,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1755615617, - "narHash": "sha256-HMwfAJBdrr8wXAkbGhtcby1zGFvs+StOp19xNsbqdOg=", + "lastModified": 1756542300, + "narHash": "sha256-tlOn88coG5fzdyqz6R93SQL5Gpq+m/DsWpekNFhqPQk=", "owner": "nixos", "repo": "nixpkgs", - "rev": "20075955deac2583bb12f07151c2df830ef346b4", + "rev": "d7600c775f877cd87b4f5a831c28aa94137377aa", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 7b3bb7e..a8951e4 100644 --- a/flake.nix +++ b/flake.nix @@ -35,6 +35,7 @@ modules = [ ./neovim.nix ]; + extraSpecialArgs = {inherit inputs;}; }; in { nixosConfigurations = { diff --git a/neovim.nix b/neovim.nix index 7e7797c..552e88a 100644 --- a/neovim.nix +++ b/neovim.nix @@ -1,6 +1,8 @@ { - inputs, + config, + lib, pkgs, + inputs, ... }: { config.vim = { @@ -48,7 +50,572 @@ # Languages that will be supported in default and maximal configurations. nix.enable = true; - markdown.enable = true; + markdown = { + enable = true; + extensions.render-markdown-nvim = { + enable = true; + setupOpts = { + enabled = true; + render_modes = ["n" "c" "t"]; + max_file_size = 10.0; + debounce = 100; + preset = "none"; + log_level = "error"; + log_runtime = false; + file_types = ["markdown"]; + #ignore = '' + # function() + # return false + # end + #''; + #nested = true; + change_events = {}; + #restart_highlighter = false; + injections = { + gitcommit = { + enabled = true; + query = '' + ((message) @injection.content + (#set! injection.combined) + (#set! injection.include-children) + (#set! injection.language "markdown")) + ''; + }; + }; + patterns = { + markdown = { + disable = true; + directives = [ + { + id = 17; + name = "conceal_lines"; + } + { + id = 18; + name = "conceal_lines"; + } + ]; + }; + }; + anti_conceal = { + enabled = true; + disabled_modes = false; + above = 0; + below = 0; + ignore = { + code_background = true; + indent = true; + sign = true; + virtual_lines = true; + }; + }; + padding = { + highlight = "Normal"; + }; + latex = { + enabled = false; # Disabled to resolve :checkhealth warnings + }; + #on = { + # attach = '' + # function() end + # ''; + # initial = '' + # function() end + # ''; + # render = '' + # function() end + # ''; + # clear = '' + # function() end + # ''; + #}; + #completions = { + # blink = {enabled = false;}; + # coq = {enabled = false;}; + # lsp = {enabled = false;}; + # filter = { + # callout = '' + # function() + # return true + # end + # ''; + # checkbox = '' + # function() + # return true + # end + # ''; + # }; + #}; + heading = { + enabled = true; + render_modes = false; + atx = true; + setext = true; + sign = true; + icons = ["󰲡 " "󰲣 " "󰲥 " "󰲧 " "󰲩 " "󰲫 "]; + position = "overlay"; + signs = ["󰫎 "]; + width = "full"; + left_margin = 0; + left_pad = 0; + right_pad = 0; + min_width = 0; + border = false; + border_virtual = false; + border_prefix = false; + above = "▄"; + below = "▀"; + backgrounds = [ + "RenderMarkdownH1Bg" + "RenderMarkdownH2Bg" + "RenderMarkdownH3Bg" + "RenderMarkdownH4Bg" + "RenderMarkdownH5Bg" + "RenderMarkdownH6Bg" + ]; + foregrounds = [ + "RenderMarkdownH1" + "RenderMarkdownH2" + "RenderMarkdownH3" + "RenderMarkdownH4" + "RenderMarkdownH5" + "RenderMarkdownH6" + ]; + custom = {}; + }; + paragraph = { + enabled = true; + render_modes = false; + left_margin = 0; + indent = 0; + min_width = 0; + }; + code = { + enabled = true; + render_modes = false; + sign = true; + conceal_delimiters = true; + language = true; + position = "left"; + language_icon = true; + language_name = true; + language_info = true; + language_pad = 0; + disable_background = ["diff"]; + width = "full"; + left_margin = 0; + left_pad = 0; + right_pad = 0; + min_width = 0; + border = "hide"; + language_border = "█"; + language_left = ""; + language_right = ""; + above = "▄"; + below = "▀"; + inline = true; + inline_left = ""; + inline_right = ""; + inline_pad = 0; + highlight = "RenderMarkdownCode"; + highlight_info = "RenderMarkdownCodeInfo"; + highlight_language = null; + highlight_border = "RenderMarkdownCodeBorder"; + highlight_fallback = "RenderMarkdownCodeFallback"; + highlight_inline = "RenderMarkdownCodeInline"; + style = "full"; + }; + dash = { + enabled = true; + render_modes = false; + icon = "─"; + width = "full"; + left_margin = 0; + highlight = "RenderMarkdownDash"; + }; + document = { + enabled = true; + render_modes = false; + conceal = { + char_patterns = {}; + line_patterns = {}; + }; + }; + bullet = { + enabled = true; + render_modes = false; + icons = ["●" "○" "◆" "◇"]; + ordered_icons = '' + function(ctx) + local value = vim.trim(ctx.value) + local index = tonumber(value:sub(1, #value - 1)) + return ('%d.'):format(index > 1 and index or ctx.index) + end + ''; + left_pad = 0; + right_pad = 0; + highlight = "RenderMarkdownBullet"; + scope_highlight = {}; + }; + checkbox = { + enabled = true; + render_modes = false; + bullet = false; + right_pad = 1; + unchecked = { + icon = "󰄱 "; + highlight = "RenderMarkdownUnchecked"; + scope_highlight = null; + }; + checked = { + icon = "󰱒 "; + highlight = "RenderMarkdownChecked"; + scope_highlight = null; + }; + custom = { + todo = { + raw = "[-]"; + rendered = "󰥔 "; + highlight = "RenderMarkdownTodo"; + scope_highlight = null; + }; + }; + }; + quote = { + enabled = true; + render_modes = false; + icon = "▋"; + repeat_linebreak = false; + highlight = [ + "RenderMarkdownQuote1" + "RenderMarkdownQuote2" + "RenderMarkdownQuote3" + "RenderMarkdownQuote4" + "RenderMarkdownQuote5" + "RenderMarkdownQuote6" + ]; + }; + pipe_table = { + enabled = true; + render_modes = false; + preset = "none"; + cell = "padded"; + #cell_offset = '' + # function() + # return 0 + # end + #''; + padding = 1; + min_width = 0; + border = [ + "┌" + "┬" + "┐" + "├" + "┼" + "┤" + "└" + "┴" + "┘" + "│" + "─" + ]; + border_enabled = true; + border_virtual = false; + alignment_indicator = "━"; + head = "RenderMarkdownTableHead"; + row = "RenderMarkdownTableRow"; + filler = "RenderMarkdownTableFill"; + style = "full"; + }; + callout = { + note = { + raw = "[!NOTE]"; + rendered = "󰋽 Note"; + highlight = "RenderMarkdownInfo"; + category = "github"; + }; + tip = { + raw = "[!TIP]"; + rendered = "󰌶 Tip"; + highlight = "RenderMarkdownSuccess"; + category = "github"; + }; + important = { + raw = "[!IMPORTANT]"; + rendered = "󰅾 Important"; + highlight = "RenderMarkdownHint"; + category = "github"; + }; + warning = { + raw = "[!WARNING]"; + rendered = "󰀪 Warning"; + highlight = "RenderMarkdownWarn"; + category = "github"; + }; + caution = { + raw = "[!CAUTION]"; + rendered = "󰳦 Caution"; + highlight = "RenderMarkdownError"; + category = "github"; + }; + 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"; + }; + }; + link = { + enabled = true; + render_modes = false; + footnote = { + enabled = true; + superscript = true; + prefix = ""; + suffix = ""; + }; + image = "󰥶 "; + email = "󰀓 "; + hyperlink = "󰌹 "; + highlight = "RenderMarkdownLink"; + wiki = { + icon = "󱗖 "; + #body = '' + # function() + # return nil + # end + #''; + highlight = "RenderMarkdownWikiLink"; + scope_highlight = null; + }; + custom = { + web = { + pattern = "^http"; + icon = "󰖟 "; + }; + discord = { + pattern = "discord%.com"; + icon = "󰙯 "; + }; + github = { + pattern = "github%.com"; + icon = "󰊤 "; + }; + gitlab = { + pattern = "gitlab%.com"; + icon = "󰮠 "; + }; + google = { + pattern = "google%.com"; + icon = "󰊭 "; + }; + neovim = { + pattern = "neovim%.io"; + icon = " "; + }; + reddit = { + pattern = "reddit%.com"; + icon = "󰑍 "; + }; + stackoverflow = { + pattern = "stackoverflow%.com"; + icon = "󰓌 "; + }; + wikipedia = { + pattern = "wikipedia%.org"; + icon = "󰖬 "; + }; + youtube = { + pattern = "youtube%.com"; + icon = "󰗃 "; + }; + }; + }; + sign = { + enabled = true; + highlight = "RenderMarkdownSign"; + }; + inline_highlight = { + enabled = true; + render_modes = false; + highlight = "RenderMarkdownInlineHighlight"; + }; + indent = { + enabled = false; + render_modes = false; + per_level = 2; + skip_level = 1; + skip_heading = false; + icon = "▎"; + priority = 0; + highlight = "RenderMarkdownIndent"; + }; + html = { + enabled = true; + render_modes = false; + comment = { + conceal = true; + text = null; + highlight = "RenderMarkdownHtmlComment"; + }; + tag = {}; + }; + win_options = { + conceallevel = { + default = "vim.o.conceallevel"; + rendered = 3; + }; + concealcursor = { + default = "vim.o.concealcursor"; + rendered = ""; + }; + }; + overrides = { + buflisted = {}; + buftype = { + nofile = { + render_modes = true; + padding = {highlight = "NormalFloat";}; + sign = {enabled = false;}; + }; + }; + filetype = {}; + }; + custom_handlers = {}; + #yaml = { + # enabled = true; + # render_modes = false; + #}; + }; + }; + }; # Languages that are enabled in the maximal configuration. bash.enable = true;