Skip to content

Commit ca9fc31

Browse files
authored
DiffInformation - adjust API + bug fixes (microsoft#234113)
1 parent 3257d08 commit ca9fc31

File tree

5 files changed

+16
-12
lines changed

5 files changed

+16
-12
lines changed

src/vs/platform/editor/common/editor.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -389,7 +389,7 @@ export type ITextEditorDiff = [
389389
export interface ITextEditorDiffInformation {
390390
readonly documentVersion: number;
391391
readonly original: URI | undefined;
392-
readonly modified: URI | undefined;
392+
readonly modified: URI;
393393
readonly diff: readonly ITextEditorDiff[];
394394
}
395395

src/vs/workbench/api/browser/mainThreadEditors.ts

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -154,18 +154,16 @@ export class MainThreadTextEditors implements MainThreadTextEditorsShape {
154154
return constObservable(undefined);
155155
}
156156

157-
return observableFromEvent(this, dirtyDiffModel.onDidChange, e => {
157+
return observableFromEvent(this, dirtyDiffModel.onDidChange, () => {
158158
const scmQuickDiff = dirtyDiffModel.quickDiffs.find(diff => diff.isSCM === true);
159-
if (!e || !scmQuickDiff) {
159+
if (!scmQuickDiff) {
160160
return undefined;
161161
}
162162

163-
return {
164-
originalResource: scmQuickDiff.originalResource,
165-
changes: e.changes
166-
.filter(change => change.label === scmQuickDiff.label)
167-
.map(change => change.change)
168-
};
163+
const scmQuickDiffChanges = dirtyDiffModel.mapChanges.get(scmQuickDiff.label) ?? [];
164+
const changes = scmQuickDiffChanges.map(index => dirtyDiffModel.changes[index].change);
165+
166+
return { originalResource: scmQuickDiff.originalResource, changes };
169167
});
170168
});
171169

src/vs/workbench/api/common/extHost.protocol.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1828,7 +1828,7 @@ export type ITextEditorDiff = [
18281828
export interface ITextEditorDiffInformation {
18291829
readonly documentVersion: number;
18301830
readonly original: UriComponents | undefined;
1831-
readonly modified: UriComponents | undefined;
1831+
readonly modified: UriComponents;
18321832
readonly diff: readonly ITextEditorDiff[];
18331833
}
18341834

src/vs/workbench/api/common/extHostTextEditors.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,11 +193,16 @@ export class ExtHostEditors extends Disposable implements ExtHostEditorsShape {
193193
} satisfies vscode.TextEditorDiff;
194194
});
195195

196+
const that = this;
196197
const result = Object.freeze({
197198
documentVersion: diffInformation.documentVersion,
198199
original,
199200
modified,
200-
diff
201+
diff,
202+
get isStale(): boolean {
203+
const document = that._extHostDocumentsAndEditors.getDocument(modified);
204+
return document?.version !== diffInformation.documentVersion;
205+
}
201206
});
202207

203208
textEditor._acceptDiffInformation(result);

src/vscode-dts/vscode.proposed.textEditorDiffInformation.d.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,9 @@ declare module 'vscode' {
2323
export interface TextEditorDiffInformation {
2424
readonly documentVersion: number;
2525
readonly original: Uri | undefined;
26-
readonly modified: Uri | undefined;
26+
readonly modified: Uri;
2727
readonly diff: readonly TextEditorDiff[];
28+
get isStale(): boolean;
2829
}
2930

3031
export interface TextEditorDiffInformationChangeEvent {

0 commit comments

Comments
 (0)