✨ feat(vscode): 代码阅读库规则卡片不再吞掉字段中间的方法,编辑时收起子块

This commit is contained in:
cruldra committed 2026-09-26 19:58:43 +08:00
1 parent c803fd457f
commit 2251e67ef8
15 files changed
+280 -54

No files matched your search

@@ -1,4 +1,5 @@
import type { BlockView, PreviewText, PropertyItem, SourceRange } from './types'
import { blockPath } from './filter'
import { showsOffset } from './segments'
import { propertyItemId, propertyRowId } from './viewState'
@@ -109,6 +110,15 @@ export function revealPlan(blocks: BlockView[], line: number, definition: number
return target && { id: target.block.id, expand: target.ancestors }
}
/**
* 目标块被正在编辑的祖先盖住、不在页面上(库规则的卡片正在编辑,目标是它下面留下的方法):改成闪盖住它的那块,
* 展开那块的祖先,不再找目标里的属性行。covered 见 coveredByEditing。
*/
export function uncoveredPlan(plan: RevealPlan, covered: ReadonlyMap<string, string>): RevealPlan {
const owner = covered.get(plan.id)
return owner === undefined ? plan : { id: owner, expand: blockPath(owner).slice(0, -1) }
}
/**
* 让一块露出来时视口顶部要在的位置,和 VS Code 跳到定义一样:整块已经在视口里就不滚;否则放到视口正中,比视口还高就顶部对齐。
* viewTop / viewHeight 是视口里露出块的那部分(钉住的筛选栏下面)。