✨ feat(vscode): 审查视图也能隐藏测试文件,和未提交的更改共用一个开关
This commit is contained in:
1 parent
851be48c43
commit
78d5748b81
12 files changed
+139
-53
No files matched your search
@@ -10,10 +10,9 @@ import * as path from 'node:path'
|
||||
import { QuickPickItemKind, Uri, window, workspace } from 'vscode'
|
||||
import { fileAtRef } from '../../git/fileAt'
|
||||
import { logger } from '../../logging/logger'
|
||||
import { buildChangedTree } from '../explorer/changedTree'
|
||||
import { toPathKey } from '../pathMap'
|
||||
import { ChangeDecorations } from './changeDecorations'
|
||||
import { changeOf, reviewBaseFile } from './changedFiles'
|
||||
import { changeOf, reviewBaseFile, reviewTree } from './changedFiles'
|
||||
import { countingFiles, pickEntries, pickItemText, pickRows, withFileCount } from './pickList'
|
||||
import { columnLabel, REVIEW_COLUMNS_TEXT, reviewableIssue, reviewablePullRequest, reviewBaseLabel, reviewBaseMissing, reviewDescription, reviewMessage } from './reviewRules'
|
||||
import { loadIssue, loadPullRequest, loadPullRequestFiles, requireRepo, reviewCandidateIssues } from './reviewSource'
|
||||
@@ -189,6 +188,11 @@ export class ReviewMode implements TreeFilter, Disposable {
|
||||
}
|
||||
}
|
||||
|
||||
/** 隐藏测试文件的开关换了:正审查着的文件按新开关重摆。 */
|
||||
testsToggled(): void {
|
||||
this.place()
|
||||
}
|
||||
|
||||
dispose(): void {
|
||||
for (const disposable of this.disposables)
|
||||
disposable.dispose()
|
||||
@@ -272,21 +276,29 @@ export class ReviewMode implements TreeFilter, Disposable {
|
||||
}
|
||||
|
||||
private async show(loaded: Loaded): Promise<void> {
|
||||
const { issue, pr, files, worktree } = loaded
|
||||
const root = Uri.file(worktree)
|
||||
// 工作副本当根,名字照写工作区文件夹的:看的还是这个仓库,只是 PR 最新的代码
|
||||
const folder: WorkspaceFolder = { uri: root, name: workspace.workspaceFolders?.[0]?.name ?? path.basename(worktree), index: 0 }
|
||||
const changes = files.map(file => ({ path: file.path, change: changeOf(file.status) }))
|
||||
const root = Uri.file(loaded.worktree)
|
||||
// 先记下再进:进的时候打开着的预览就来问对比基准
|
||||
this.loaded = loaded
|
||||
const entering = this.filters.enter(this, 'review')
|
||||
this.files.showChanges([{ roots: [{ folder, tree: buildChangedTree(changes) }] }])
|
||||
this.decorations.show(changes.map(file => ({ uri: Uri.joinPath(root, file.path), change: file.change })))
|
||||
this.view.description = reviewDescription(issue.number)
|
||||
this.view.message = reviewMessage(issue, pr, files.length)
|
||||
this.place()
|
||||
this.decorations.show(loaded.files.map(file => ({ uri: Uri.joinPath(root, file.path), change: changeOf(file.status) })))
|
||||
await Promise.all([
|
||||
entering,
|
||||
this.context.workspaceState.update(REVIEW_ISSUE_KEY, issue.number),
|
||||
this.context.workspaceState.update(REVIEW_ISSUE_KEY, loaded.issue.number),
|
||||
])
|
||||
}
|
||||
|
||||
/** 把正审查着的 PR 改过的文件摆上树(隐藏测试文件时剔掉),标题后面写上藏了几个。 */
|
||||
private place(): void {
|
||||
const loaded = this.loaded
|
||||
if (!loaded)
|
||||
return
|
||||
const { issue, pr, files, worktree } = loaded
|
||||
// 工作副本当根,名字照写工作区文件夹的:看的还是这个仓库,只是 PR 最新的代码
|
||||
const folder: WorkspaceFolder = { uri: Uri.file(worktree), name: workspace.workspaceFolders?.[0]?.name ?? path.basename(worktree), index: 0 }
|
||||
const { tree, hidden } = reviewTree(files, this.filters.testsHidden)
|
||||
this.files.showChanges([{ roots: [{ folder, tree }] }])
|
||||
this.view.description = reviewDescription(issue.number, hidden)
|
||||
this.view.message = reviewMessage(issue, pr, files.length)
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user