This commit is contained in:
Daniel 2024-07-15 17:16:33 +08:00
parent 8bf6646514
commit 5e2f5859c6
No known key found for this signature in database
GPG key ID: 86211BA83DF03017

View file

@ -18,6 +18,9 @@ package treenode
import ( import (
"bytes" "bytes"
"strings"
"sync"
"github.com/88250/gulu" "github.com/88250/gulu"
"github.com/88250/lute" "github.com/88250/lute"
"github.com/88250/lute/ast" "github.com/88250/lute/ast"
@ -26,12 +29,9 @@ import (
"github.com/88250/lute/parse" "github.com/88250/lute/parse"
"github.com/88250/lute/render" "github.com/88250/lute/render"
"github.com/88250/vitess-sqlparser/sqlparser" "github.com/88250/vitess-sqlparser/sqlparser"
"github.com/emirpasic/gods/sets/hashset"
"github.com/siyuan-note/logging" "github.com/siyuan-note/logging"
"github.com/siyuan-note/siyuan/kernel/cache" "github.com/siyuan-note/siyuan/kernel/cache"
"github.com/siyuan-note/siyuan/kernel/util" "github.com/siyuan-note/siyuan/kernel/util"
"strings"
"sync"
) )
func GetEmbedBlockRef(embedNode *ast.Node) (blockRefID string) { func GetEmbedBlockRef(embedNode *ast.Node) (blockRefID string) {
@ -229,7 +229,6 @@ func CountBlockNodes(node *ast.Node) (ret int) {
func ParentNodesWithHeadings(node *ast.Node) (parents []*ast.Node) { func ParentNodesWithHeadings(node *ast.Node) (parents []*ast.Node) {
const maxDepth = 255 const maxDepth = 255
i := 0 i := 0
headingIDs := hashset.New()
for n := node; nil != n; n = n.Parent { for n := node; nil != n; n = n.Parent {
parent := n.Parent parent := n.Parent
if maxDepth < i { if maxDepth < i {
@ -246,9 +245,13 @@ func ParentNodesWithHeadings(node *ast.Node) (parents []*ast.Node) {
// The heading block update time is refreshed after editing the blocks under the heading https://github.com/siyuan-note/siyuan/issues/11374 // The heading block update time is refreshed after editing the blocks under the heading https://github.com/siyuan-note/siyuan/issues/11374
parentHeadingLevel := 7 parentHeadingLevel := 7
for prev := n.Previous; nil != prev; prev = prev.Previous { for prev := n.Previous; nil != prev; prev = prev.Previous {
if ast.NodeHeading == prev.Type && prev.HeadingLevel < parentHeadingLevel && !headingIDs.Contains(prev.ID) { if ast.NodeHeading == prev.Type {
if prev.HeadingLevel >= parentHeadingLevel {
break
}
parents = append(parents, prev) parents = append(parents, prev)
headingIDs.Add(prev.ID) parentHeadingLevel = prev.HeadingLevel
} }
} }