fix(codec): blokinhoud in een lijstitem reist verliesvrij door de visuele modus (#1925) #1938
No reviewers
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck!1938
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/codec-list-item-block-content-v3"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Samenvatting
Quills documentmodel is vlak:
listencodeBlockzijn exclusieve blokattributen, dus een codeblok in een lijstitem kon niet als kind van de bulletregel reizen.MarkdownToDeltaplakte de inhoud aan de lijstitem-tekst met eenx-md-codeblock-lang-attribuut, waardoor de fence en de inspringing stil verloren gingen bij de rondgang. Hetzelfde gold voor tabellen en mermaid-diagrammen in lijstitems.De codec voert blokinhoud in een lijstitem nu als
x-embed-list-block-embed met de inspringing bewaard:MarkdownToDelta): onderscheptpreen embeds invisitElementBeforewanneer_listItemIndent >= 0, sluit de lijstitem-regel af, reconstrueert de ruwe markdown (fence voor codeblokken,data-attribuut voor embeds), en draagt het blok als embed met de juiste inspringing (2 spaties per niveau voor ongeordende lijsten, 3 voor geordende).DeltaToMarkdown): deEmbeddableListBlock.toMdSyntaxhandler schrijft de ruwe markdown verbatim terug.indent-attribuut zodat_prefixNumberde nummering niet verbreekt — de teller slaat ingesprongen niet-lijst-regels over.Wat er verandert aan het bestandsformaat
Niets. De round-trip was al supposed to be lossless; deze fix maakt het daadwerkelijk lossless. De Markdown die er uit komt is standaard GFM met ingesprongen blokinhoud in lijstitems — precies wat de CommonMark/GFM-spec voorschrijft voor geneste blokken.
Testplan
test/markdown_quill_codec_test.dartGenerated with Devin
4df486f1f205e4884c8945cb2f7cd50250b7b00f0250b7b00f97326904539732690453ebd2d00992