✨ feat(vscode): 代码阅读预览顶部加块筛选栏

语言插件按和语言无关的 id 报块属性(通用的由宿主从 facts 推),翻译插件起名,webview 只按 id 筛;
筛选整个工作区共用、记在 workspaceState;JavaScript 不再显示「抽象:否」「仅类型:否」
This commit is contained in:
cruldra committed 2026-09-25 21:31:19 +08:00
1 parent 4eaf2ae11d
commit 1c7e31c51a
29 files changed
+1364 -319

No files matched your search

@@ -1,6 +1,7 @@
import type { CodeReaderRegistry } from '../registry'
import type { TreeSitterRuntime } from '../runtime'
import type { DocumentMessage } from './messages'
import { fileAttributes } from '../attributes'
import { readBlockViews } from '../blockView'
/** 生成预览数据要读的那点文档信息(TextDocument 的子集)。 */
@@ -24,6 +25,7 @@ export async function documentMessage(
version,
languageId,
blocks: [],
attributes: [],
translators: registry.translatorsFor(languageId).map(({ id, label }) => ({ id, label })),
translatorId: translator?.id ?? '',
}
@@ -31,7 +33,8 @@ export async function documentMessage(
if (!adapter)
return { ...message, error: `代码阅读还不支持「${languageId}」这种语言` }
try {
return { ...message, blocks: await readBlockViews(runtime, adapter, translator, languageId, source) }
const blocks = await readBlockViews(runtime, adapter, translator, languageId, source)
return { ...message, blocks, attributes: fileAttributes(blocks, translator?.attributeNames) }
}
catch (err) {
return { ...message, error: err instanceof Error ? err.message : String(err) }