diff --git a/kernel/model/export_merge.go b/kernel/model/export_merge.go index f451f609a..300a48d51 100644 --- a/kernel/model/export_merge.go +++ b/kernel/model/export_merge.go @@ -20,6 +20,7 @@ import ( "github.com/88250/lute/ast" "github.com/88250/lute/parse" "github.com/siyuan-note/siyuan/kernel/filesys" + "github.com/siyuan-note/siyuan/kernel/treenode" ) func mergeSubDocs(rootTree *parse.Tree) (ret *parse.Tree, err error) { @@ -30,9 +31,6 @@ func mergeSubDocs(rootTree *parse.Tree) (ret *parse.Tree, err error) { } insertPoint := rootTree.Root.LastChild - if nil == insertPoint { - insertPoint = rootTree.Root - } // 跳过空段落插入点,向上寻找非空段落 for ; nil != insertPoint && ast.NodeParagraph == insertPoint.Type; insertPoint = insertPoint.Previous { @@ -41,6 +39,16 @@ func mergeSubDocs(rootTree *parse.Tree) (ret *parse.Tree, err error) { } } + // 如果找不到非空段落,则使用第一个段落作为插入点 + if nil == insertPoint { + insertPoint = rootTree.Root.FirstChild + if nil == insertPoint { + // 如果文档为空,则创建一个空段落作为插入点 + insertPoint = treenode.NewParagraph() + rootTree.Root.AppendChild(insertPoint) + } + } + for { i := 0 if err = walkBlock(insertPoint, rootBlock, i); nil != err {