Browse Source

:art: 块引用与所引用的内容块进行交换 https://github.com/siyuan-note/siyuan/issues/4981

Liang Ding 2 năm trước cách đây
mục cha
commit
f4a918cd5b
1 tập tin đã thay đổi với 10 bổ sung0 xóa
  1. 10 0
      kernel/model/block.go

+ 10 - 0
kernel/model/block.go

@@ -113,6 +113,11 @@ func SwapBlockRef(refID, defID string, includeChildren bool) (err error) {
 	var defNodeChildren []*ast.Node
 	var defNodeChildren []*ast.Node
 	if ast.NodeListItem == defNode.Parent.Type {
 	if ast.NodeListItem == defNode.Parent.Type {
 		defNode = defNode.Parent
 		defNode = defNode.Parent
+		for c := defNode.FirstChild; nil != c; c = c.Next {
+			if ast.NodeList == c.Type {
+				defNodeChildren = append(defNodeChildren, c)
+			}
+		}
 	} else if ast.NodeHeading == defNode.Type && includeChildren {
 	} else if ast.NodeHeading == defNode.Type && includeChildren {
 		defNodeChildren = treenode.HeadingChildren(defNode)
 		defNodeChildren = treenode.HeadingChildren(defNode)
 	}
 	}
@@ -131,6 +136,11 @@ func SwapBlockRef(refID, defID string, includeChildren bool) (err error) {
 			li.SetIALAttr("updated", newID[:14])
 			li.SetIALAttr("updated", newID[:14])
 			li.AppendChild(refNode)
 			li.AppendChild(refNode)
 			defNode.InsertAfter(li)
 			defNode.InsertAfter(li)
+			if !includeChildren {
+				for _, c := range defNodeChildren {
+					li.AppendChild(c)
+				}
+			}
 
 
 			newID = ast.NewNodeID()
 			newID = ast.NewNodeID()
 			list := &ast.Node{ID: newID, Type: ast.NodeList, ListData: &ast.ListData{Typ: defNode.Parent.ListData.Typ}}
 			list := &ast.Node{ID: newID, Type: ast.NodeList, ListData: &ast.ListData{Typ: defNode.Parent.ListData.Typ}}