From d3001ab12072bdbf06517cfc6780a6f1817d806a Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Fri, 5 Dec 2025 10:16:11 +0800 Subject: [PATCH] :art: Improve the behavior of `Jump to parent block` in lists https://github.com/siyuan-note/siyuan/issues/16516 Signed-off-by: Daniel <845765@qq.com> --- kernel/model/block.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/kernel/model/block.go b/kernel/model/block.go index 3f632e732..1eae22dcd 100644 --- a/kernel/model/block.go +++ b/kernel/model/block.go @@ -212,7 +212,7 @@ func GetBlockSiblingID(id string) (parent, previous, next string) { parent = parentBlock.ID if ast.NodeDocument == parentBlock.Type { - parent = parentBlock.ID + parent = treenode.FirstLeafBlock(parentBlock).ID if nil != current.Previous && current.Previous.IsBlock() { previous = current.Previous.ID @@ -230,6 +230,16 @@ func GetBlockSiblingID(id string) (parent, previous, next string) { return } + if ast.NodeListItem != parentBlock.Type { + if parentBlock = treenode.ParentBlock(parentBlock); nil != parentBlock { + parent = parentBlock.ID + if ast.NodeDocument == parentBlock.Type { + parent = treenode.FirstLeafBlock(parentBlock).ID + } + } + } + + parentBlock = treenode.ParentBlock(current) for ; nil != parentBlock; parentBlock = treenode.ParentBlock(parentBlock) { if nil != parentBlock.Previous && parentBlock.Previous.IsBlock() { previous = parentBlock.Previous.ID @@ -239,6 +249,7 @@ func GetBlockSiblingID(id string) (parent, previous, next string) { break } } + parentBlock = treenode.ParentBlock(current) for ; nil != parentBlock; parentBlock = treenode.ParentBlock(parentBlock) { if nil != parentBlock.Next && parentBlock.Next.IsBlock() {