✨ feat(vscode): 代码阅读的注释和函数说明按 Markdown 渲染

This commit is contained in:
cruldra committed 2026-09-25 14:28:23 +08:00
1 parent aae9012f14
commit a53c2a6aac
18 files changed
+394 -66

No files matched your search

+10 -3
View File
@@ -4,7 +4,7 @@ import { describe, expect, it } from 'vitest'
import { readBlockViews, toBlockViews } from './blockView'
import { createPythonAdapter } from './languages/python'
import { createTypeScriptAdapter } from './languages/typescript'
import { propertyLines, readFixture, runtime, segmentText, WASM_DIR, withBlocks } from './testSupport'
import { previewText, propertyLines, readFixture, runtime, WASM_DIR, withBlocks } from './testSupport'
import { pythonZhTranslator } from './translators/pythonZh'
import { typescriptZhTranslator } from './translators/typescriptZh'
@@ -38,7 +38,7 @@ const PROPERTY_KINDS = new Set(['function', 'import', 'const', 'variable'])
function translationText(view: BlockView): string {
if (!('translation' in view))
throw new Error(`块 ${view.id} 是属性表`)
return segmentText(view.translation)
return previewText(view.translation)
}
describe('blockView', () => {
@@ -53,7 +53,7 @@ describe('blockView', () => {
if ('properties' in view)
expect(view.properties.length, view.id).toBeGreaterThan(0)
else
expect(view.translation.length, view.id).toBeGreaterThan(0)
expect(previewText(view.translation), view.id).not.toBe('')
}
})
@@ -100,6 +100,13 @@ describe('blockView', () => {
expect(getUser?.children[0]).toMatchObject({ kind: 'comment', startLine: 38, endLine: 38 })
})
it('注释块的译文、函数的「说明」是 Markdown 原文,webview 按它渲染', async () => {
const env = await views(ts, 'typescript', typescriptZhTranslator, readFixture('envLock.ts.txt'))
expect(byId(env, '0')).toMatchObject({ kind: 'comment', translation: { markdown: expect.stringMatching(/^\.env file lock \/ unlock helpers\.\n\nRecursively/) } })
const findEnvFiles = byId(env, '5')
expect('properties' in findEnvFiles && findEnvFiles.properties[1]).toEqual({ label: '说明', value: { markdown: expect.stringMatching(/^Scan the workspace folder/) } })
})
it('id 是块在树里的位置,行号 0 起,多行块去掉共同缩进', async () => {
const env = await views(ts, 'typescript', typescriptZhTranslator, readFixture('envLock.ts.txt'))
expect(byId(env, '5.1.0')).toMatchObject({ kind: 'return', startLine: 25, endLine: 25, code: 'return []' })