Signed-off-by: Daniel <845765@qq.com>
This commit is contained in:
Daniel 2025-09-23 23:22:18 +08:00
parent 58f72678ae
commit be233229a9
No known key found for this signature in database
GPG key ID: 86211BA83DF03017
4 changed files with 73 additions and 29 deletions

View file

@ -85,29 +85,31 @@ func GetHeadingFold(nodes []*ast.Node) (ret []*ast.Node) {
return
}
func IsUnderFoldedHeading(node *ast.Node) bool {
func GetParentFoldedHeading(node *ast.Node) (parentFoldedHeading *ast.Node) {
currentLevel := 7
if ast.NodeHeading == node.Type {
currentLevel = node.HeadingLevel
}
for n := node.Previous; nil != n; n = n.Previous {
if ast.NodeHeading == n.Type {
if n.HeadingLevel >= currentLevel {
break
}
currentLevel = n.HeadingLevel
if ast.NodeHeading != n.Type {
continue
}
if "1" == n.IALAttr("fold") {
if ast.NodeHeading != node.Type {
return true
}
if n.HeadingLevel > node.HeadingLevel {
return true
}
if n.HeadingLevel >= currentLevel {
break
}
currentLevel = n.HeadingLevel
if "1" == n.IALAttr("fold") {
if ast.NodeHeading != node.Type {
parentFoldedHeading = n
}
if n.HeadingLevel < node.HeadingLevel {
parentFoldedHeading = n
}
}
}
return false
return
}
func HeadingChildren(heading *ast.Node) (ret []*ast.Node) {