diff --git a/kernel/model/transaction.go b/kernel/model/transaction.go index 73608c33d..352d1b03e 100644 --- a/kernel/model/transaction.go +++ b/kernel/model/transaction.go @@ -577,7 +577,24 @@ func (tx *Transaction) doAppendInsert(operation *Operation) (ret *TxErr) { for i := 0; i < len(toInserts); i++ { toInsert := toInserts[i] if isContainer { - if ast.NodeSuperBlock == node.Type { + if ast.NodeList == node.Type { + // 列表下只能挂列表项,所以这里需要分情况处理 https://github.com/siyuan-note/siyuan/issues/9955 + if ast.NodeList == toInsert.Type { + var childLis []*ast.Node + for childLi := toInsert.FirstChild; nil != childLi; childLi = childLi.Next { + childLis = append(childLis, childLi) + } + for _, childLi := range childLis { + node.AppendChild(childLi) + } + } else { + newLiID := ast.NewNodeID() + newLi := &ast.Node{ID: newLiID, Type: ast.NodeListItem, ListData: &ast.ListData{Typ: node.ListData.Typ}} + newLi.SetIALAttr("id", newLiID) + node.AppendChild(newLi) + newLi.AppendChild(toInsert) + } + } else if ast.NodeSuperBlock == node.Type { node.LastChild.InsertBefore(toInsert) } else { node.AppendChild(toInsert)