✨ feat(vscode): 代码阅读的入口文件和入口块换成绿色播放图标,不再写「入口」二字

This commit is contained in:
cruldra committed 2026-10-08 07:17:25 +08:00
1 parent 5827defd51
commit f6bc217e91
10 files changed
+110 -53

No files matched your search

+6 -6
View File
@@ -31,7 +31,7 @@
| 侧栏文件树 | 只看和打开:展开目录、打开文件、刷新、全部折叠,外加给目录 / 文件记注释、按审查工单只看 PR 改过的文件;不做新建 / 重命名 / 删除 |
| 审查工单 | 标题栏第一个按钮「选工单」列出看板「审查」列的工单和「进行中」列里已经有 PR 的工单(按列分组),选中后树里只剩这张工单的 PR 改过的文件(目录层级照留、全部展开,按 M / A / D 着色,删掉的列出来但打不开);点开的是本机这张工单的工作副本里 PR 最新的代码,不标差异、不开 diff;本机没有工作副本就拉 PR 分支建一个。弹框列的是看板上现在摆着的工单(不再加载一遍),选中后重读那张工单和它的 PR。见「审查工单」 |
| 文件注释 | 读代码时给目录 / 文件随手记一句:存在各工作区文件夹的 `.spx/code-notes.json`,跟着仓库走;在 VS Code 里改名、挪位置、删除时注释跟着变 |
| 入口 | 只认项目自己写明的启动项:pyproject.toml 的 `[project.scripts]` / `[project.gui-scripts]`、Cargo.toml 的 `src/main.rs` 和 `[[bin]]` 的 `path`、go.mod 模块里 `package main` 加 `func main` 的文件、package.json 的 `bin`;不按文件名、函数名猜。侧栏灰字「入口」(有注释时「注释 · 入口」),预览里名字对上的块名称后面加浅色「入口」。见「入口」 |
| 入口 | 只认项目自己写明的启动项:pyproject.toml 的 `[project.scripts]` / `[project.gui-scripts]`、Cargo.toml 的 `src/main.rs` 和 `[[bin]]` 的 `path`、go.mod 模块里 `package main` 加 `func main` 的文件、package.json 的 `bin`;不按文件名、函数名猜。侧栏里入口文件的图标换成绿色播放图标,预览里名字对上的块左边的种类图标换成同样的绿色播放图标。见「入口」 |
| 问 AI | 块右上角「问 AI」,在块下面问 Claude Code(`claude -p`,只读,用输入框旁边选的 profile,记住上次选的,没选过用插件默认的)这块代码,回答逐字出来按 Markdown 显示、能追问(接着这块最近一次的会话,收起再展开、重启 VS Code 也接得上)、能停;输入框里能粘贴 / 拖进图片随问题发(存在 `.spx/code-qa/`,跟着问答删);问答存进各工作区文件夹的 `.spx/code-qa.json`,灰字挂在块下面免得重复问,理解了就删。问答按块的位置记号挂,记号只由和语言无关的块数据(种类、facts 里的名字、源码哈希)算出,文件别处改了照样认得;认不回来的不显示,留在文件里,代码改回来又挂回去。见「问 AI」 |
| 译文用词 | 结构照抄原语言,只翻关键字、内置类型、运算符;用专业术语(`export` → 公共,`catch` → 捕获,`===` → 全等) |
| 函数、类、导入、常量、变量块 | 预览不显示一行译文,显示树形属性表;属性值里的类型、表达式照常直译 |
@@ -85,7 +85,7 @@
- 在 VS Code 里改名、挪位置(资源管理器拖动、`WorkspaceEdit` 等,走 `workspace.onDidRenameFiles`):注释跟着走,目录连带里面各层的注释一起走;挪到另一个工作区文件夹就搬到那边的文件里,挪出工作区就不要了。删除(`onDidDeleteFiles`):连带目录里各层的注释一起删。在 VS Code 外面(终端、git)改名删除不跟。
- 外部改了 `code-notes.json`(git pull、手改):文件监听重读,树上跟着变。
- 刷新:只重画注释变了的那几行(文件树按 Uri 记住交给 VS Code 的节点对象,VS Code 按对象认行);还没展开过的行不用管。
- 注释和代码阅读的解析、翻译无关,单独放在 `notes/`;文件树只留一个「给行添信息」的接口(`FileTreeDecorator`),由 `explorer/rowDecorator.ts` 的 `RowDecorator` 把注释和项目入口(见下节)合成一行的灰字和提示(纯函数 `explorer/rowDecoration.ts`),`index.ts` 接上。
- 注释和代码阅读的解析、翻译无关,单独放在 `notes/`;文件树只留一个「给行添信息」的接口(`FileTreeDecorator`),由 `explorer/rowDecorator.ts` 的 `RowDecorator` 把注释和项目入口(见下节)合成一行的灰字、提示和图标(纯函数 `explorer/rowDecoration.ts`),`index.ts` 接上。
### 入口
@@ -101,8 +101,8 @@
- 不认的:`[tool.poetry.scripts]` 等别的表、`[[bin]]` 没写 `path` 的、`src/bin/*.rs` 自动发现、`src/lib.rs`、package.json 的 `main` / `exports` / `scripts`。
- 一个工作区文件夹里可以有很多个项目(子目录各有自己的清单),各算各的;同一个文件被几条指到,名字合在一起。不进 `node_modules`、`.venv`、`vendor`、`dist`、`__pycache__`(还有 `.git`)。
- 什么时候算(`entries/workspaceEntries.ts` 的 `WorkspaceEntries`):打开时每个工作区文件夹扫一遍(`findFiles` 找清单和 `.go`,排除上面那几个目录);清单、`.go` 改了,或文件增删了(入口文件出现、消失),过 500ms 重扫那个工作区文件夹;入口变了的文件报给侧栏重画那几行、开着的预览重新发文档。
- 侧栏:入口文件那一行名字后面的灰字,没注释时是「入口」,有注释时是「注释 · 入口」,不盖掉注释;悬停提示在注释下面再写一行「入口,从 `app` 开始读」(没有名字的写「入口」)。contextValue 不变,菜单照旧只按有没有注释换。目录、工作区外面的行(审查的工作副本)不标。
- 预览:入口文件里,文件最外层、名字对上的那一块(函数、常量、变量、库规则的卡片,谁对上就是谁;Python 的 `app = typer.Typer()` 是变量块),属性表里写着这个名字的那一行、名字后面加一个浅色的「入口」——就是属性表里的说明词(`hint`),不另做标记。宿主在翻译好的结果上加(`entries/entryMarks.ts` 的 `markEntryNames`,`documentMessage` 里调),各语言的翻译插件不用管:块的名字按定义处(`defines`)在源码里的那一段认,属性表里按词的源码下标找到写名字的那个词;对不上就什么都不加。标差异时旧版本按同样的入口标,「入口」不会被当成改动。
- 侧栏:入口文件那一行的文件图标换成绿色播放图标(VS Code 自带图标字体的 `play`,颜色是主题色 `testing.iconPassed`,即测试通过的那种绿;`explorer/rowDecoration.ts` 的 `ENTRY_ICON`)。只换代码阅读侧栏这棵树的行,资源管理器、标签页不变;git 改动的颜色和 M / A 字母照旧。名字后面的灰字只是注释,没注释时没有灰字,不写「入口」;悬停提示在注释下面再写一行「入口,从 `app` 开始读」(没有名字的写「入口」)。contextValue 不变,菜单照旧只按有没有注释换。目录、工作区外面的行(审查的工作副本)不标。
- 预览:入口文件里,文件最外层、名字对上的那一块(函数、常量、变量、库规则的卡片,谁对上就是谁;Python 的 `app = typer.Typer()` 是变量块),卡片左边的种类图标换成绿色播放图标,名称后面不加字。走概念图标那条路:入口是一个概念(id `entry`、名字「入口」、图标 `play`、颜色 `var(--vscode-testing-iconPassed)`,和侧栏同一个主题色;`entries/entryMarks.ts` 的 `ENTRY_CONCEPT`),换掉概念列表的第一个(种类),后面别的概念照旧(库规则的卡片画几个图标的,入口替掉第一个,规则的种类和另认的照旧);种类、筛选、卡片边框色都不变。webview 照常按概念列表画,不特判入口。宿主在翻译好的结果上换(`entries/entryMarks.ts` 的 `markEntryBlocks`,`documentMessage` 里调),各语言的翻译插件不用管:块的名字按定义处(`defines`)在源码里的那一段认;对不上就什么都不改。标差异时旧版本按同样的入口标,两边的入口块一样,不会被当成改动。
### 审查工单
@@ -2062,10 +2062,10 @@ vscode/src/codeReader/
notes/store.ts .spx/code-notes.json 叫什么、每条怎么认
notes/fileNotes.ts FileNotes:注释的 FolderStore、一行的注释
notes/commands.ts 「添加注释 / 编辑注释」输入框
explorer/rowDecoration.ts 一行名字后面的灰字、悬停提示、contextValue:注释,后面接入口(纯函数)
explorer/rowDecoration.ts 一行名字后面的灰字(注释)、悬停提示、contextValue,入口文件的绿色播放图标(纯函数)
explorer/rowDecorator.ts RowDecorator:把注释和入口交给 rowDecoration 画行(FileTreeDecorator)
entries/entryPoints.ts 项目写明的入口:四种清单 / Go 源码 → 入口文件和名字(纯函数,读文件经 FolderReader)
entries/entryMarks.ts 预览里名字对上的块,名称后面加「入口」(纯函数)
entries/entryMarks.ts 预览里名字对上的块,概念列表第一个换成入口(绿色播放图标)(纯函数)
entries/workspaceEntries.ts WorkspaceEntries:各工作区文件夹扫一遍、文件变了重扫、报出入口变了的文件
qa/anchor.ts 块的位置记号(BlockAnchors)(不碰 VS Code)
qa/qaMap.ts .spx/code-qa.json 的形状、每条怎么认、记一次 / 删一次、再问时接着哪个会话(纯函数)