Skip to content

Commit a63acf5

Browse files
authored
Git - accept working set changes when a resource is staged/committed (microsoft#262885)
1 parent 6507095 commit a63acf5

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

extensions/git/src/repository.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1223,6 +1223,9 @@ export class Repository implements Disposable {
12231223
async () => {
12241224
await this.repository.add(resources.map(r => r.fsPath), opts);
12251225
this.closeDiffEditors([], [...resources.map(r => r.fsPath)]);
1226+
1227+
// Accept working set changes across all chat sessions
1228+
commands.executeCommand('_chat.editSessions.accept', resources);
12261229
},
12271230
() => {
12281231
const resourcePaths = resources.map(r => r.fsPath);
@@ -1373,6 +1376,12 @@ export class Repository implements Disposable {
13731376
this.inputBox.value = await this.getInputTemplate();
13741377
}
13751378
this.closeDiffEditors(indexResources, workingGroupResources);
1379+
1380+
// Accept working set changes across all chat sessions
1381+
const resources = indexResources.length !== 0
1382+
? indexResources.map(r => Uri.file(r))
1383+
: workingGroupResources.map(r => Uri.file(r));
1384+
commands.executeCommand('_chat.editSessions.accept', resources);
13761385
}
13771386

13781387
private commitOperationGetOptimisticResourceGroups(opts: CommitOptions): GitResourceGroups {

src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingActions.ts

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { CancellationToken } from '../../../../../base/common/cancellation.js';
77
import { Codicon } from '../../../../../base/common/codicons.js';
88
import { KeyCode, KeyMod } from '../../../../../base/common/keyCodes.js';
99
import { basename } from '../../../../../base/common/resources.js';
10-
import { URI } from '../../../../../base/common/uri.js';
10+
import { URI, UriComponents } from '../../../../../base/common/uri.js';
1111
import { isCodeEditor } from '../../../../../editor/browser/editorBrowser.js';
1212
import { ServicesAccessor } from '../../../../../editor/browser/editorExtensions.js';
1313
import { Position } from '../../../../../editor/common/core/position.js';
@@ -18,6 +18,7 @@ import { ILanguageFeaturesService } from '../../../../../editor/common/services/
1818
import { ITextModelService } from '../../../../../editor/common/services/resolverService.js';
1919
import { localize, localize2 } from '../../../../../nls.js';
2020
import { Action2, IAction2Options, MenuId, registerAction2 } from '../../../../../platform/actions/common/actions.js';
21+
import { CommandsRegistry } from '../../../../../platform/commands/common/commands.js';
2122
import { IConfigurationService } from '../../../../../platform/configuration/common/configuration.js';
2223
import { ContextKeyExpr } from '../../../../../platform/contextkey/common/contextkey.js';
2324
import { IDialogService } from '../../../../../platform/dialogs/common/dialogs.js';
@@ -745,3 +746,19 @@ export class ViewPreviousEditsAction extends EditingSessionAction {
745746
}
746747
}
747748
registerAction2(ViewPreviousEditsAction);
749+
750+
/**
751+
* Workbench command to explore accepting working set changes from an extension. Executing
752+
* the command will accept the changes for the provided resources across all edit sessions.
753+
*/
754+
CommandsRegistry.registerCommand('_chat.editSessions.accept', async (accessor: ServicesAccessor, resources: UriComponents[]) => {
755+
if (resources.length === 0) {
756+
return;
757+
}
758+
759+
const uris = resources.map(resource => URI.revive(resource));
760+
const chatEditingService = accessor.get(IChatEditingService);
761+
for (const editingSession of chatEditingService.editingSessionsObs.get()) {
762+
await editingSession.accept(...uris);
763+
}
764+
});

0 commit comments

Comments
 (0)