From 1d287eb19bc710d1e15b45b1371406944f5bedd9 Mon Sep 17 00:00:00 2001 From: Dheepak Krishnamurthy <1813121+kdheepak@users.noreply.github.com> Date: Sun, 12 Apr 2026 10:28:17 -0400 Subject: [PATCH 1/2] feat(scripts): add code fence normalization for list blocks in panvimdoc --- scripts/panvimdoc.lua | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/scripts/panvimdoc.lua b/scripts/panvimdoc.lua index c0194ef..88dffcd 100644 --- a/scripts/panvimdoc.lua +++ b/scripts/panvimdoc.lua @@ -51,6 +51,14 @@ local function indent(s, fl, ol) return table.concat(ret, "\n") end +-- Vim help code fences must start at column 1; list indentation can also +-- swallow the blank line before the opening fence, so normalize both markers. +local function normalize_list_codeblock_fences(s) + s = s:gsub("\n +(>[^ \n]*)", "\n\n%1") + s = s:gsub("\n +(<)", "\n%1") + return s +end + Writer = pandoc.scaffolding.Writer local function inlines(ils) @@ -323,7 +331,8 @@ end Writer.Block.BulletList = function(items) local buffer = {} items.content:map(function(item) - table.insert(buffer, indent(blocks(item, "\n"), "- ", " ")) + local rendered = indent(blocks(item, "\n"), "- ", " ") + table.insert(buffer, normalize_list_codeblock_fences(rendered)) end) return table.concat(buffer, "\n") .. "\n\n" end From e4f03cc247258c79f99e5bc0ed1f5de84821654c Mon Sep 17 00:00:00 2001 From: Dheepak Krishnamurthy <1813121+kdheepak@users.noreply.github.com> Date: Sun, 12 Apr 2026 10:28:18 -0400 Subject: [PATCH 2/2] test(fixtures): add codeblocks_in_nested_lists_1 render case --- .../render/codeblocks_in_nested_lists_1.md | 32 ++++++++++++++ .../render/codeblocks_in_nested_lists_1.txt | 43 +++++++++++++++++++ tests/fixtures/render_cases.json | 18 ++++++++ 3 files changed, 93 insertions(+) create mode 100644 tests/fixtures/render/codeblocks_in_nested_lists_1.md create mode 100644 tests/fixtures/render/codeblocks_in_nested_lists_1.txt diff --git a/tests/fixtures/render/codeblocks_in_nested_lists_1.md b/tests/fixtures/render/codeblocks_in_nested_lists_1.md new file mode 100644 index 0000000..bf3d1d0 --- /dev/null +++ b/tests/fixtures/render/codeblocks_in_nested_lists_1.md @@ -0,0 +1,32 @@ +# test code blocks + +```lua + print('code block at root') + print('code block at root') + print('code block at root') +``` + +- list + + ```lua + print('code block in list') + print('code block in list') + print('code block in list') + ``` + + - sublist + - a + + ```lua + print('a') + print('a') + print('a') + ``` + + - b + + ```lua + print('b') + print('b') + print('b') + ``` diff --git a/tests/fixtures/render/codeblocks_in_nested_lists_1.txt b/tests/fixtures/render/codeblocks_in_nested_lists_1.txt new file mode 100644 index 0000000..f2059ab --- /dev/null +++ b/tests/fixtures/render/codeblocks_in_nested_lists_1.txt @@ -0,0 +1,43 @@ +*test.txt* Test Description + For NVIM v0.8.0 Last change: 2026 April 12 + +============================================================================== +Table of Contents *test-table-of-contents* + +1. test code blocks |test-test-code-blocks| + +============================================================================== +1. test code blocks *test-test-code-blocks* + +>lua + print('code block at root') + print('code block at root') + print('code block at root') +< + +- list + +>lua + print('code block in list') + print('code block in list') + print('code block in list') +< + - sublist + - a + +>lua + print('a') + print('a') + print('a') +< + - b + +>lua + print('b') + print('b') + print('b') +< + +Generated by panvimdoc + +vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/tests/fixtures/render_cases.json b/tests/fixtures/render_cases.json index 3f6e666..efe9764 100644 --- a/tests/fixtures/render_cases.json +++ b/tests/fixtures/render_cases.json @@ -1,4 +1,22 @@ [ + { + "name": "codeblocks_in_nested_lists_1", + "input": "fixtures/render/codeblocks_in_nested_lists_1.md", + "expected": "fixtures/render/codeblocks_in_nested_lists_1.txt", + "options": { + "toc": true, + "dedup_subheadings": false, + "treesitter": true, + "demojify": false, + "description": "Test Description", + "vimversion": "NVIM v0.8.0", + "ignore_rawblocks": true, + "shift_heading_level_by": 0, + "increment_heading_level_by": 0, + "doc_mapping": true, + "doc_mapping_project_name": true + } + }, { "name": "dedupheadings_1", "input": "fixtures/render/dedupheadings_1.md",