Skip to content

fix(markdown): keep fenced code out of the document outline - #555

Open
ac1982 wants to merge 1 commit into
VectifyAI:mainfrom
ac1982:fix/markdown-fence-boundaries
Open

ac1982 wants to merge 1 commit into
VectifyAI:mainfrom
ac1982:fix/markdown-fence-boundaries

Conversation

@ac1982

@ac1982 ac1982 commented Oct 7, 2026 •

Copy link
Copy Markdown

Markdown indexing treats headings inside ~~~ code blocks as real sections. A four-backtick example containing triple backticks also toggles the old boolean fence state early, adding code to the outline or hiding the following real heading.

Track the opening marker and its length. Close only on the same marker, at least as long, with no trailing non-whitespace text. Support tilde fences and leave an unclosed fence active through EOF. This follows the fenced-block boundary rules in https://spec.commonmark.org/0.31.2/#fenced-code-blocks without adding a parser dependency.

Regression coverage includes tilde fences, nested shorter fences, mismatched markers, trailing text on an apparent closer, unclosed blocks, and preservation of the following heading's line number. The new cases reproduce the bug on main. python -m pytest tests/test_page_index_md.py -q passes, including both existing CLI tests.

Related historical work: #246 and #249 addressed broader Markdown parsing problems and were closed on 2026-08-31 as superseded legacy implementations. This narrower patch targets the current pageindex/page_index_md.py function, which is still called by md_to_tree and run_pageindex.py. Rechecking current main on 2026-10-08 still produces a spurious code heading for both tilde and nested-long-fence examples; this branch preserves only Before and After. No open PR implementing this specific fix was found in the refreshed search.

Revalidation on 2026-10-08: python -m pytest tests/test_page_index_md.py -q reports 5 passed and 4 subtests passed on local Python 3.14, including the CLI cases. This is not a claim that the upstream Python 3.10/3.13 CI matrix has passed. Earlier Actions runs report failure but expose no job logs identifying the cause.

Reopened after revalidating the current code and related PRs. The previous author-side closure had no recorded explanation. AI-assisted contribution.

@ac1982 ac1982 closed this Oct 7, 2026
@ac1982 ac1982 reopened this Oct 8, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant