diff --git a/kernel/model/file.go b/kernel/model/file.go index 48ef74edb..8e3de81c0 100644 --- a/kernel/model/file.go +++ b/kernel/model/file.go @@ -1253,7 +1253,7 @@ func CreateDailyNote(boxID string) (p string, existed bool, err error) { // Creating a dailynote template supports doc attributes https://github.com/siyuan-note/siyuan/issues/10698 templateIALs := parse.IAL2Map(templateTree.Root.KramdownIAL) for k, v := range templateIALs { - if "name" == k || "alias" == k || "bookmark" == k || "memo" == k || strings.HasPrefix(k, "custom-") { + if "name" == k || "alias" == k || "bookmark" == k || "memo" == k || "icon" == k || strings.HasPrefix(k, "custom-") { tree.Root.SetIALAttr(k, v) } } diff --git a/kernel/model/listitem.go b/kernel/model/listitem.go index db82b02f2..69af99e83 100644 --- a/kernel/model/listitem.go +++ b/kernel/model/listitem.go @@ -66,7 +66,10 @@ func ListItem2Doc(srcListItemID, targetBoxID, targetPath string) (srcRootBlockID } var children []*ast.Node - for c := listItemNode.FirstChild.Next; nil != c; c = c.Next { + for c := listItemNode.FirstChild; nil != c; c = c.Next { + if c.IsMarker() { + continue + } children = append(children, c) } if 1 > len(children) { diff --git a/kernel/model/transaction.go b/kernel/model/transaction.go index 7fb88da05..310445718 100644 --- a/kernel/model/transaction.go +++ b/kernel/model/transaction.go @@ -1228,7 +1228,7 @@ func getRefDefIDs(node *ast.Node) (refDefIDs []string) { return ast.WalkContinue } - if ast.NodeTextMark == n.Type && n.IsTextMarkType("block-ref") { + if treenode.IsBlockRef(n) { refDefIDs = append(refDefIDs, n.TextMarkBlockRefID) } return ast.WalkContinue @@ -1571,7 +1571,9 @@ func refreshDynamicRefTexts(updatedDefNodes map[string]*ast.Node, updatedTrees m // 推送动态锚文本节点刷新 for _, defNode := range changedDefNodes { - task.AppendAsyncTaskWithDelay(task.SetRefDynamicText, 200*time.Millisecond, util.PushSetRefDynamicText, refTreeID, n.ID, defNode.id, defNode.refText) + if "ref-d" == defNode.refType { + task.AppendAsyncTaskWithDelay(task.SetRefDynamicText, 200*time.Millisecond, util.PushSetRefDynamicText, refTreeID, n.ID, defNode.id, defNode.refText) + } } return ast.WalkContinue } @@ -1674,6 +1676,7 @@ func flushUpdateRefTextRenameDoc() { type changedDefNode struct { id string refText string + refType string // ref-d/ref-s/embed } func updateRefText(refNode *ast.Node, changedDefNodes map[string]*ast.Node) (changed bool, defNodes []*changedDefNode) { @@ -1681,24 +1684,30 @@ func updateRefText(refNode *ast.Node, changedDefNodes map[string]*ast.Node) (cha if !entering { return ast.WalkContinue } - if !treenode.IsBlockRef(n) { + if treenode.IsBlockRef(n) { + defID, refText, subtype := treenode.GetBlockRef(n) + if "" == defID { + return ast.WalkContinue + } + + defNode := changedDefNodes[defID] + if nil == defNode { + return ast.WalkSkipChildren + } + + changed = true + if "d" == subtype { + refText = getNodeRefText(defNode) + treenode.SetDynamicBlockRefText(n, refText) + } + defNodes = append(defNodes, &changedDefNode{id: defID, refText: refText, refType: "ref-" + subtype}) + return ast.WalkContinue + } else if treenode.IsEmbedBlockRef(n) { + defID := treenode.GetEmbedBlockRef(n) + changed = true + defNodes = append(defNodes, &changedDefNode{id: defID, refType: "embed"}) return ast.WalkContinue } - - defID, _, subtype := treenode.GetBlockRef(n) - if "s" == subtype || "" == defID { - return ast.WalkContinue - } - - defNode := changedDefNodes[defID] - if nil == defNode { - return ast.WalkSkipChildren - } - - refText := getNodeRefText(defNode) - treenode.SetDynamicBlockRefText(n, refText) - changed = true - defNodes = append(defNodes, &changedDefNode{id: defID, refText: refText}) return ast.WalkContinue }) return