summaryrefslogtreecommitdiff
path: root/packages/vscode-ide-companion/src
diff options
context:
space:
mode:
Diffstat (limited to 'packages/vscode-ide-companion/src')
-rw-r--r--packages/vscode-ide-companion/src/diff-manager.ts28
-rw-r--r--packages/vscode-ide-companion/src/extension.test.ts7
2 files changed, 34 insertions, 1 deletions
diff --git a/packages/vscode-ide-companion/src/diff-manager.ts b/packages/vscode-ide-companion/src/diff-manager.ts
index d2a53b54..9c7afc1d 100644
--- a/packages/vscode-ide-companion/src/diff-manager.ts
+++ b/packages/vscode-ide-companion/src/diff-manager.ts
@@ -54,11 +54,25 @@ export class DiffManager {
new vscode.EventEmitter<JSONRPCNotification>();
readonly onDidChange = this.onDidChangeEmitter.event;
private diffDocuments = new Map<string, DiffInfo>();
+ private readonly subscriptions: vscode.Disposable[] = [];
constructor(
private readonly log: (message: string) => void,
private readonly diffContentProvider: DiffContentProvider,
- ) {}
+ ) {
+ this.subscriptions.push(
+ vscode.window.onDidChangeActiveTextEditor((editor) => {
+ this.onActiveEditorChange(editor);
+ }),
+ );
+ this.onActiveEditorChange(vscode.window.activeTextEditor);
+ }
+
+ dispose() {
+ for (const subscription of this.subscriptions) {
+ subscription.dispose();
+ }
+ }
/**
* Creates and shows a new diff view.
@@ -199,6 +213,18 @@ export class DiffManager {
);
}
+ private async onActiveEditorChange(editor: vscode.TextEditor | undefined) {
+ const isVisible =
+ !!editor &&
+ editor.document.uri.scheme === DIFF_SCHEME &&
+ this.diffDocuments.has(editor.document.uri.toString());
+ await vscode.commands.executeCommand(
+ 'setContext',
+ 'gemini.diff.isVisible',
+ isVisible,
+ );
+ }
+
private addDiffDocument(uri: vscode.Uri, diffInfo: DiffInfo) {
this.diffDocuments.set(uri.toString(), diffInfo);
}
diff --git a/packages/vscode-ide-companion/src/extension.test.ts b/packages/vscode-ide-companion/src/extension.test.ts
index 89d1821f..2b3db5ac 100644
--- a/packages/vscode-ide-companion/src/extension.test.ts
+++ b/packages/vscode-ide-companion/src/extension.test.ts
@@ -18,6 +18,13 @@ vi.mock('vscode', () => ({
show: vi.fn(),
sendText: vi.fn(),
})),
+ onDidChangeActiveTextEditor: vi.fn(),
+ activeTextEditor: undefined,
+ tabGroups: {
+ all: [],
+ close: vi.fn(),
+ },
+ showTextDocument: vi.fn(),
},
workspace: {
workspaceFolders: [],