From 9268a1564f623bd16f8eadd13cf223f1334d9830 Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Sat, 3 Sep 2022 22:56:13 +0800 Subject: [PATCH] =?UTF-8?q?:bug:=20=E5=88=97=E8=A1=A8=E9=A1=B9=E7=AC=AC?= =?UTF-8?q?=E4=B8=80=E4=B8=AA=E5=AD=90=E5=9D=97=E4=B8=BA=E7=A9=BA=E6=97=B6?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E6=B8=B2=E6=9F=93=E9=94=99=E8=AF=AF=20Fix=20?= =?UTF-8?q?https://github.com/siyuan-note/siyuan/issues/5806?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel/model/export.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/kernel/model/export.go b/kernel/model/export.go index ae0aa375e..f815af8e4 100644 --- a/kernel/model/export.go +++ b/kernel/model/export.go @@ -1270,6 +1270,7 @@ func exportTree(tree *parse.Tree, wysiwyg bool) (ret *parse.Tree) { } unlinks = nil + var emptyParagraphs []*ast.Node ast.Walk(ret.Root, func(n *ast.Node, entering bool) ast.WalkStatus { if !entering { return ast.WalkContinue @@ -1279,6 +1280,13 @@ func exportTree(tree *parse.Tree, wysiwyg bool) (ret *parse.Tree) { n.RemoveIALAttr("fold") n.RemoveIALAttr("heading-fold") + if ast.NodeParagraph == n.Type { + if nil == n.FirstChild { + // 空的段落块需要补全文本展位,否则后续格式化后再解析树会语义不一致 https://github.com/siyuan-note/siyuan/issues/5806 + emptyParagraphs = append(emptyParagraphs, n) + } + } + if ast.NodeWidget == n.Type { // 挂件块导出 https://github.com/siyuan-note/siyuan/issues/3834 exportMdVal := n.IALAttr("data-export-md") @@ -1309,6 +1317,9 @@ func exportTree(tree *parse.Tree, wysiwyg bool) (ret *parse.Tree) { for _, n := range unlinks { n.Unlink() } + for _, emptyParagraph := range emptyParagraphs { + emptyParagraph.AppendChild(&ast.Node{Type: ast.NodeText, Tokens: []byte(parse.Zwj)}) + } return ret }