From 172615b0e3c4c3113c583a9ff5bb0706d37f1011 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Mon, 8 Dec 2025 11:03:08 +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 | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/kernel/model/block.go b/kernel/model/block.go index 1eae22dcd..1425cb146 100644 --- a/kernel/model/block.go +++ b/kernel/model/block.go @@ -230,14 +230,26 @@ 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 - } + parentCount := 0 + for ; nil != parentBlock; parentBlock = treenode.ParentBlock(parentBlock) { + if ast.NodeDocument == parentBlock.Type { + break } + + if ast.NodeList == parentBlock.Type || ast.NodeBlockquote == parentBlock.Type || ast.NodeSuperBlock == parentBlock.Type || ast.NodeCallout == parentBlock.Type { + parentCount++ + continue + } + + if ast.NodeListItem == parentBlock.Type { + if 1 > parentCount { + parentBlock = treenode.ParentBlock(parentBlock) + } + parentBlock = treenode.ParentBlock(parentBlock) + } + break } + parent = treenode.FirstLeafBlock(parentBlock).ID parentBlock = treenode.ParentBlock(current) for ; nil != parentBlock; parentBlock = treenode.ParentBlock(parentBlock) {