✨ feat(vscode): 代码阅读「未提交的更改」点文件行改成打开标准预览(和主栏一样不标差异),文件行上加「打开更改」按钮才打开对比上一次提交的预览,语言没有代码阅读的走 VS Code 自带的差异视图,删掉的文件行不挂这个按钮

This commit is contained in:
cruldra committed 2026-10-14 13:47:59 +11:00
1 parent 4b6e110a44
commit c2a13e5691
18 files changed
+211 -79

No files matched your search

+2 -2
View File
@@ -25,7 +25,7 @@ function source(root: string, label: string): DiffBaseSource & { fire: () => voi
}
}
describe('预览对比什么:审查按位置,上一次提交看是不是从「未提交的更改」点开的', () => {
describe('预览对比什么:审查按位置,上一次提交看是不是用「打开更改」打开的', () => {
const review = source('/worktrees/issue-446', 'PR 目标分支 master')
const head = source('/ws', '上一次提交')
const bases = previewDiffBases(review, head)
@@ -35,7 +35,7 @@ describe('预览对比什么:审查按位置,上一次提交看是不是从
expect(bases.diffBase(uri('/worktrees/issue-446/src/a.ts'), 'other')?.label).toBe('PR 目标分支 master')
})
it('工作区仓库里有改动的文件:从「未提交的更改」点开的对比上一次提交,别处打开的不比', () => {
it('工作区仓库里有改动的文件:用「未提交的更改」文件行上的「打开更改」打开的对比上一次提交,别处打开的(含点这一栏的文件行)不比', () => {
expect(bases.diffBase(uri('/ws/src/a.ts'), 'uncommitted')?.label).toBe('上一次提交')
expect(bases.diffBase(uri('/ws/src/a.ts'), 'other')).toBeUndefined()
})
+6 -3
View File
@@ -3,7 +3,7 @@ import { Disposable } from 'vscode'
/**
* 对比基准:预览拿它取这个文件改之前的样子,和现在的比出差异。
* 给哪个基准见 [previewDiffBases]:审查工作副本里的对比 PR 的目标分支,从「未提交的更改」一栏点开的有改动的文件对比上一次提交。
* 给哪个基准见 [previewDiffBases]:审查工作副本里的对比 PR 的目标分支,用「未提交的更改」文件行上的「打开更改」打开的有改动的文件对比上一次提交。
*/
export interface DiffBase {
/** 筛选栏上「对比:」后面的字:「上一次提交」「PR 目标分支 master」 */
@@ -22,7 +22,10 @@ export interface DiffBaseSource {
readonly onDidChange: Event<void>
}
/** 一个预览标签页是从哪儿打开的:从侧栏「未提交的更改」一栏点开的是 `uncommitted`,别处(主栏、收藏栏、点链接、跳定义……)打开的是 `other`。 */
/**
* 一个预览标签页是从哪儿打开的:用侧栏「未提交的更改」文件行上的「打开更改」打开的是 `uncommitted`,
* 别处(点这一栏的文件行、主栏、收藏栏、点链接、跳定义……)打开的是 `other`。
*/
export type OpenedFrom = 'uncommitted' | 'other'
/** 预览问对比基准的地方:同一个文件从哪儿打开的不一样,对比的也可能不一样;基准变了发 onDidChange,打开着的预览重新问。 */
@@ -32,7 +35,7 @@ export interface PreviewDiffBases {
}
/**
* 预览对比什么:审查工作副本里的文件不管从哪儿打开都对比 PR 的目标分支,其余的只有从「未提交的更改」一栏点开的才对比上一次提交,别处打开的不比。
* 预览对比什么:审查工作副本里的文件不管从哪儿打开都对比 PR 的目标分支,其余的只有用「未提交的更改」文件行上的「打开更改」打开的才对比上一次提交,别处打开的不比。
*
* @param review 审查:工作副本里的文件给 PR 目标分支
* @param uncommitted 工作区仓库里有改动的文件给上一次提交