feat(f7): additive onDidChangeBaseline event on DiffViewController (#21)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Ben Stull
2026-06-11 08:45:46 -07:00
parent a3f9688a91
commit 81a8370c41
+7
View File
@@ -26,6 +26,11 @@ export class DiffViewController implements vscode.Disposable {
/** Source of truth for the content provider, keyed by `document.uri.toString()`. */ /** Source of truth for the content provider, keyed by `document.uri.toString()`. */
private readonly baselines = new Map<string, Baseline>(); private readonly baselines = new Map<string, Baseline>();
private readonly onDidChangeEmitter = new vscode.EventEmitter<vscode.Uri>(); private readonly onDidChangeEmitter = new vscode.EventEmitter<vscode.Uri>();
/** F7 (additive): fires on every baseline capture (open / advance / pin) so
* the track-changes preview refreshes without polling. Mirrors the internal
* content-provider change signal but carries the real document URI. */
private readonly onDidChangeBaselineEmitter = new vscode.EventEmitter<{ uri: string }>();
readonly onDidChangeBaseline = this.onDidChangeBaselineEmitter.event;
private storageWarned = false; private storageWarned = false;
constructor(private readonly store: BaselineStore | null) { constructor(private readonly store: BaselineStore | null) {
@@ -38,6 +43,7 @@ export class DiffViewController implements vscode.Disposable {
}; };
this.disposables.push( this.disposables.push(
this.onDidChangeEmitter, this.onDidChangeEmitter,
this.onDidChangeBaselineEmitter,
vscode.workspace.registerTextDocumentContentProvider(BASELINE_SCHEME, provider), vscode.workspace.registerTextDocumentContentProvider(BASELINE_SCHEME, provider),
vscode.commands.registerCommand("cowriting.toggleDiffView", () => vscode.commands.registerCommand("cowriting.toggleDiffView", () =>
this.toggle(vscode.window.activeTextEditor), this.toggle(vscode.window.activeTextEditor),
@@ -123,6 +129,7 @@ export class DiffViewController implements vscode.Disposable {
} }
// An open diff re-requests the left side when its baseline URI changes. // An open diff re-requests the left side when its baseline URI changes.
this.onDidChangeEmitter.fire(this.baselineUri(document)); this.onDidChangeEmitter.fire(this.baselineUri(document));
this.onDidChangeBaselineEmitter.fire({ uri: key });
} }
private warnStorageOnce(): void { private warnStorageOnce(): void {