✨ feat(vscode): 代码阅读的调用嵌套:实参的值又是跨多行的调用时在值那一格里写它的一行、套它的实参表,一层层往下套;埋在式子里后面还跟着东西的调用括起来

This commit is contained in:
cruldra committed 2026-09-27 22:31:35 +08:00
1 parent dc100692b3
commit 285d711740
16 files changed
+471 -55

No files matched your search

+7 -4
View File
@@ -38,9 +38,9 @@ function shows(text: PreviewText, offset: number): boolean {
return !('markdown' in text) && showsOffset(text, offset)
}
/** 一行译文下面那张表(总是展开的)里有格子满足 test。 */
/** 实参表(一行译文下面那张、值那一格里套着的,都总是展开的)里有格子满足 test,套着的表一层层都算。 */
function tableShows(table: PreviewTable | undefined, test: (cell: PreviewText) => boolean): boolean {
return table?.items.some(item => item.cells.some(test)) ?? false
return table?.items.some(item => item.cells.some(test) || tableShows(item.table, test)) ?? false
}
/**
@@ -87,10 +87,13 @@ function definingItem(items: PropertyItem[] | undefined, parentId: string, offse
return undefined
}
/** parentId 下面一层层的子行里,哪个的格子满足 test(显示着要找的名字):要展开的各层(parentId 到那个子行所在的那一层)。 */
/**
* parentId 下面一层层的子行里,哪个的格子(连它值那一格里套着的实参表)满足 test(显示着要找的名字):
* 要展开的各层(parentId 到那个子行所在的那一层)。
*/
function showingItem(items: PropertyItem[] | undefined, parentId: string, test: (cell: PreviewText) => boolean): string[] | undefined {
for (const [index, item] of (items ?? []).entries()) {
if (item.cells.some(test))
if (item.cells.some(test) || tableShows(item.table, test))
return [parentId]
const inner = showingItem(item.items, propertyItemId(parentId, index), test)
if (inner)