Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/editor/test/browser/diff/testDiffProviderFactoryService.ts
3296 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import { CancellationToken } from '../../../../base/common/cancellation.js';
7
import { toDisposable } from '../../../../base/common/lifecycle.js';
8
import { IDocumentDiff, IDocumentDiffProvider, IDocumentDiffProviderOptions } from '../../../common/diff/documentDiffProvider.js';
9
import { linesDiffComputers } from '../../../common/diff/linesDiffComputers.js';
10
import { ITextModel } from '../../../common/model.js';
11
import { Event } from '../../../../base/common/event.js';
12
import { IDiffProviderFactoryService } from '../../../browser/widget/diffEditor/diffProviderFactoryService.js';
13
14
export class TestDiffProviderFactoryService implements IDiffProviderFactoryService {
15
declare readonly _serviceBrand: undefined;
16
createDiffProvider(): IDocumentDiffProvider {
17
return new SyncDocumentDiffProvider();
18
}
19
}
20
21
class SyncDocumentDiffProvider implements IDocumentDiffProvider {
22
computeDiff(original: ITextModel, modified: ITextModel, options: IDocumentDiffProviderOptions, cancellationToken: CancellationToken): Promise<IDocumentDiff> {
23
const result = linesDiffComputers.getDefault().computeDiff(original.getLinesContent(), modified.getLinesContent(), options);
24
return Promise.resolve({
25
changes: result.changes,
26
quitEarly: result.hitTimeout,
27
identical: original.getValue() === modified.getValue(),
28
moves: result.moves,
29
});
30
}
31
32
onDidChange: Event<void> = () => toDisposable(() => { });
33
}
34
35