@theia/scm 1.46.0-next.153 → 1.46.0-next.196
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/browser/decorations/scm-decorations-service.d.ts +9 -3
- package/lib/browser/decorations/scm-decorations-service.d.ts.map +1 -1
- package/lib/browser/decorations/scm-decorations-service.js +50 -30
- package/lib/browser/decorations/scm-decorations-service.js.map +1 -1
- package/lib/browser/dirty-diff/content-lines.d.ts +2 -0
- package/lib/browser/dirty-diff/content-lines.d.ts.map +1 -1
- package/lib/browser/dirty-diff/content-lines.js +7 -0
- package/lib/browser/dirty-diff/content-lines.js.map +1 -1
- package/lib/browser/dirty-diff/diff-computer.d.ts +23 -14
- package/lib/browser/dirty-diff/diff-computer.d.ts.map +1 -1
- package/lib/browser/dirty-diff/diff-computer.js +91 -27
- package/lib/browser/dirty-diff/diff-computer.js.map +1 -1
- package/lib/browser/dirty-diff/diff-computer.spec.js +120 -52
- package/lib/browser/dirty-diff/diff-computer.spec.js.map +1 -1
- package/lib/browser/dirty-diff/dirty-diff-decorator.d.ts +5 -3
- package/lib/browser/dirty-diff/dirty-diff-decorator.d.ts.map +1 -1
- package/lib/browser/dirty-diff/dirty-diff-decorator.js +14 -7
- package/lib/browser/dirty-diff/dirty-diff-decorator.js.map +1 -1
- package/lib/browser/dirty-diff/dirty-diff-module.d.ts.map +1 -1
- package/lib/browser/dirty-diff/dirty-diff-module.js +9 -0
- package/lib/browser/dirty-diff/dirty-diff-module.js.map +1 -1
- package/lib/browser/dirty-diff/dirty-diff-navigator.d.ts +49 -0
- package/lib/browser/dirty-diff/dirty-diff-navigator.d.ts.map +1 -0
- package/lib/browser/dirty-diff/dirty-diff-navigator.js +292 -0
- package/lib/browser/dirty-diff/dirty-diff-navigator.js.map +1 -0
- package/lib/browser/dirty-diff/dirty-diff-widget.d.ts +47 -0
- package/lib/browser/dirty-diff/dirty-diff-widget.d.ts.map +1 -0
- package/lib/browser/dirty-diff/dirty-diff-widget.js +320 -0
- package/lib/browser/dirty-diff/dirty-diff-widget.js.map +1 -0
- package/lib/browser/scm-colors.d.ts +6 -0
- package/lib/browser/scm-colors.d.ts.map +1 -0
- package/lib/browser/scm-colors.js +25 -0
- package/lib/browser/scm-colors.js.map +1 -0
- package/lib/browser/scm-contribution.d.ts +20 -6
- package/lib/browser/scm-contribution.d.ts.map +1 -1
- package/lib/browser/scm-contribution.js +112 -22
- package/lib/browser/scm-contribution.js.map +1 -1
- package/lib/browser/scm-tree-widget.js +1 -1
- package/lib/browser/scm-tree-widget.js.map +1 -1
- package/package.json +8 -6
- package/src/browser/decorations/scm-decorations-service.ts +60 -36
- package/src/browser/dirty-diff/content-lines.ts +9 -0
- package/src/browser/dirty-diff/diff-computer.spec.ts +120 -52
- package/src/browser/dirty-diff/diff-computer.ts +88 -40
- package/src/browser/dirty-diff/dirty-diff-decorator.ts +17 -10
- package/src/browser/dirty-diff/dirty-diff-module.ts +9 -0
- package/src/browser/dirty-diff/dirty-diff-navigator.ts +288 -0
- package/src/browser/dirty-diff/dirty-diff-widget.ts +364 -0
- package/src/browser/scm-colors.ts +21 -0
- package/src/browser/scm-contribution.ts +97 -6
- package/src/browser/scm-tree-widget.tsx +1 -1
- package/src/browser/style/dirty-diff-decorator.css +2 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ResourceProvider } from '@theia/core';
|
|
2
|
-
import { DirtyDiffDecorator } from '../dirty-diff/dirty-diff-decorator';
|
|
1
|
+
import { Emitter, Event, ResourceProvider } from '@theia/core';
|
|
2
|
+
import { DirtyDiffDecorator, DirtyDiffUpdate } from '../dirty-diff/dirty-diff-decorator';
|
|
3
3
|
import { EditorManager, TextEditor } from '@theia/editor/lib/browser';
|
|
4
4
|
import { ScmService } from '../scm-service';
|
|
5
5
|
export declare class ScmDecorationsService {
|
|
@@ -8,8 +8,14 @@ export declare class ScmDecorationsService {
|
|
|
8
8
|
protected readonly editorManager: EditorManager;
|
|
9
9
|
protected readonly resourceProvider: ResourceProvider;
|
|
10
10
|
private readonly diffComputer;
|
|
11
|
-
|
|
11
|
+
protected readonly onDirtyDiffUpdateEmitter: Emitter<DirtyDiffUpdate>;
|
|
12
|
+
readonly onDirtyDiffUpdate: Event<DirtyDiffUpdate>;
|
|
12
13
|
constructor(decorator: DirtyDiffDecorator, scmService: ScmService, editorManager: EditorManager, resourceProvider: ResourceProvider);
|
|
13
14
|
applyEditorDecorations(editor: TextEditor): Promise<void>;
|
|
15
|
+
protected supportsDirtyDiff(editor: TextEditor): boolean;
|
|
16
|
+
protected createUpdateTask(editor: TextEditor): {
|
|
17
|
+
(): void;
|
|
18
|
+
cancel(): void;
|
|
19
|
+
};
|
|
14
20
|
}
|
|
15
21
|
//# sourceMappingURL=scm-decorations-service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scm-decorations-service.d.ts","sourceRoot":"","sources":["../../../src/browser/decorations/scm-decorations-service.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"scm-decorations-service.d.ts","sourceRoot":"","sources":["../../../src/browser/decorations/scm-decorations-service.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAwB,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAGzF,OAAO,EAAE,aAAa,EAAgB,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACpF,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAI5C,qBACa,qBAAqB;IAOE,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,kBAAkB;IACxD,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU;IACtC,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa;IAC5C,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB;IATnF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IAEnD,SAAS,CAAC,QAAQ,CAAC,wBAAwB,2BAAkC;IAC7E,QAAQ,CAAC,iBAAiB,EAAE,KAAK,CAAC,eAAe,CAAC,CAAuC;gBAGtC,SAAS,EAAE,kBAAkB,EACrC,UAAU,EAAE,UAAU,EACnB,aAAa,EAAE,aAAa,EACzB,gBAAgB,EAAE,gBAAgB;IA+B7E,sBAAsB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IA0B/D,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO;IAIxD,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG;QAAE,IAAI,IAAI,CAAC;QAAC,MAAM,IAAI,IAAI,CAAC;KAAE;CAGhF"}
|
|
@@ -24,58 +24,78 @@ const diff_computer_1 = require("../dirty-diff/diff-computer");
|
|
|
24
24
|
const content_lines_1 = require("../dirty-diff/content-lines");
|
|
25
25
|
const browser_1 = require("@theia/editor/lib/browser");
|
|
26
26
|
const scm_service_1 = require("../scm-service");
|
|
27
|
+
const throttle = require("@theia/core/shared/lodash.throttle");
|
|
27
28
|
let ScmDecorationsService = class ScmDecorationsService {
|
|
28
29
|
constructor(decorator, scmService, editorManager, resourceProvider) {
|
|
29
30
|
this.decorator = decorator;
|
|
30
31
|
this.scmService = scmService;
|
|
31
32
|
this.editorManager = editorManager;
|
|
32
33
|
this.resourceProvider = resourceProvider;
|
|
33
|
-
this.dirtyState = true;
|
|
34
34
|
this.diffComputer = new diff_computer_1.DiffComputer();
|
|
35
|
-
this.
|
|
36
|
-
this.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
/** onDidChange event might be called several times one after another, so need to prevent repeated events. */
|
|
45
|
-
setTimeout(() => {
|
|
46
|
-
this.dirtyState = true;
|
|
47
|
-
}, 500);
|
|
48
|
-
}
|
|
35
|
+
this.onDirtyDiffUpdateEmitter = new core_1.Emitter();
|
|
36
|
+
this.onDirtyDiffUpdate = this.onDirtyDiffUpdateEmitter.event;
|
|
37
|
+
const updateTasks = new Map();
|
|
38
|
+
this.editorManager.onCreated(editorWidget => {
|
|
39
|
+
const { editor } = editorWidget;
|
|
40
|
+
if (!this.supportsDirtyDiff(editor)) {
|
|
41
|
+
return;
|
|
49
42
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
43
|
+
const toDispose = new core_1.DisposableCollection();
|
|
44
|
+
const updateTask = this.createUpdateTask(editor);
|
|
45
|
+
updateTasks.set(editorWidget, updateTask);
|
|
46
|
+
toDispose.push(editor.onDocumentContentChanged(() => updateTask()));
|
|
47
|
+
editorWidget.disposed.connect(() => {
|
|
48
|
+
updateTask.cancel();
|
|
49
|
+
updateTasks.delete(editorWidget);
|
|
50
|
+
toDispose.dispose();
|
|
51
|
+
});
|
|
52
|
+
updateTask();
|
|
53
|
+
});
|
|
54
|
+
const runUpdateTasks = () => {
|
|
55
|
+
for (const updateTask of updateTasks.values()) {
|
|
56
|
+
updateTask();
|
|
55
57
|
}
|
|
58
|
+
};
|
|
59
|
+
this.scmService.onDidAddRepository(({ provider }) => {
|
|
60
|
+
var _a;
|
|
61
|
+
provider.onDidChange(runUpdateTasks);
|
|
62
|
+
(_a = provider.onDidChangeResources) === null || _a === void 0 ? void 0 : _a.call(provider, runUpdateTasks);
|
|
56
63
|
});
|
|
64
|
+
this.scmService.onDidChangeSelectedRepository(runUpdateTasks);
|
|
57
65
|
}
|
|
58
66
|
async applyEditorDecorations(editor) {
|
|
59
67
|
const currentRepo = this.scmService.selectedRepository;
|
|
60
68
|
if (currentRepo) {
|
|
61
69
|
try {
|
|
62
|
-
|
|
70
|
+
// Currently, the uri used here is specific to vscode.git; other SCM providers are thus not supported.
|
|
71
|
+
// See https://github.com/eclipse-theia/theia/pull/13104#discussion_r1494540628 for a detailed discussion.
|
|
72
|
+
const query = { path: editor.uri['codeUri'].fsPath, ref: '~' };
|
|
73
|
+
const uri = editor.uri.withScheme(currentRepo.provider.id).withQuery(JSON.stringify(query));
|
|
63
74
|
const previousResource = await this.resourceProvider(uri);
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
75
|
+
try {
|
|
76
|
+
const previousContent = await previousResource.readContents();
|
|
77
|
+
const previousLines = content_lines_1.ContentLines.fromString(previousContent);
|
|
78
|
+
const currentLines = content_lines_1.ContentLines.fromTextEditorDocument(editor.document);
|
|
79
|
+
const dirtyDiff = this.diffComputer.computeDirtyDiff(content_lines_1.ContentLines.arrayLike(previousLines), content_lines_1.ContentLines.arrayLike(currentLines));
|
|
80
|
+
const update = { editor, previousRevisionUri: uri, ...dirtyDiff };
|
|
81
|
+
this.decorator.applyDecorations(update);
|
|
82
|
+
this.onDirtyDiffUpdateEmitter.fire(update);
|
|
83
|
+
}
|
|
84
|
+
finally {
|
|
85
|
+
previousResource.dispose();
|
|
86
|
+
}
|
|
73
87
|
}
|
|
74
88
|
catch (e) {
|
|
75
89
|
// Scm resource may not be found, do nothing.
|
|
76
90
|
}
|
|
77
91
|
}
|
|
78
92
|
}
|
|
93
|
+
supportsDirtyDiff(editor) {
|
|
94
|
+
return editor.shouldDisplayDirtyDiff();
|
|
95
|
+
}
|
|
96
|
+
createUpdateTask(editor) {
|
|
97
|
+
return throttle(() => this.applyEditorDecorations(editor), 500);
|
|
98
|
+
}
|
|
79
99
|
};
|
|
80
100
|
ScmDecorationsService = (0, tslib_1.__decorate)([
|
|
81
101
|
(0, inversify_1.injectable)(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scm-decorations-service.js","sourceRoot":"","sources":["../../../src/browser/decorations/scm-decorations-service.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,+CAA+C;AAC/C,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,4DAAkE;AAClE,
|
|
1
|
+
{"version":3,"file":"scm-decorations-service.js","sourceRoot":"","sources":["../../../src/browser/decorations/scm-decorations-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { TextEditorDocument } from '@theia/editor/lib/browser';
|
|
1
2
|
export interface ContentLines extends ArrayLike<string> {
|
|
2
3
|
readonly length: number;
|
|
3
4
|
getLineContent: (line: number) => string;
|
|
@@ -8,6 +9,7 @@ export interface ContentLinesArrayLike extends ContentLines, ArrayLike<string> {
|
|
|
8
9
|
}
|
|
9
10
|
export declare namespace ContentLines {
|
|
10
11
|
function fromString(content: string): ContentLines;
|
|
12
|
+
function fromTextEditorDocument(document: TextEditorDocument): ContentLines;
|
|
11
13
|
function arrayLike(lines: ContentLines): ContentLinesArrayLike;
|
|
12
14
|
}
|
|
13
15
|
//# sourceMappingURL=content-lines.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-lines.d.ts","sourceRoot":"","sources":["../../../src/browser/dirty-diff/content-lines.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,YAAa,SAAQ,SAAS,CAAC,MAAM,CAAC;IACnD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CAC5C;AAED,MAAM,WAAW,qBAAsB,SAAQ,YAAY,EAAE,SAAS,CAAC,MAAM,CAAC;IAC1E,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAClD,QAAQ,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAChC;AAED,yBAAiB,YAAY,CAAC;IAI1B,SAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAmCxD;IAED,SAAgB,SAAS,CAAC,KAAK,EAAE,YAAY,GAAG,qBAAqB,CAEpE;CA0CJ"}
|
|
1
|
+
{"version":3,"file":"content-lines.d.ts","sourceRoot":"","sources":["../../../src/browser/dirty-diff/content-lines.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,MAAM,WAAW,YAAa,SAAQ,SAAS,CAAC,MAAM,CAAC;IACnD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CAC5C;AAED,MAAM,WAAW,qBAAsB,SAAQ,YAAY,EAAE,SAAS,CAAC,MAAM,CAAC;IAC1E,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAClD,QAAQ,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAChC;AAED,yBAAiB,YAAY,CAAC;IAI1B,SAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAmCxD;IAED,SAAgB,sBAAsB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,YAAY,CAKjF;IAED,SAAgB,SAAS,CAAC,KAAK,EAAE,YAAY,GAAG,qBAAqB,CAEpE;CA0CJ"}
|
|
@@ -58,6 +58,13 @@ var ContentLines;
|
|
|
58
58
|
};
|
|
59
59
|
}
|
|
60
60
|
ContentLines.fromString = fromString;
|
|
61
|
+
function fromTextEditorDocument(document) {
|
|
62
|
+
return {
|
|
63
|
+
length: document.lineCount,
|
|
64
|
+
getLineContent: line => document.getLineContent(line + 1),
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
ContentLines.fromTextEditorDocument = fromTextEditorDocument;
|
|
61
68
|
function arrayLike(lines) {
|
|
62
69
|
return new Proxy(lines, getProxyHandler());
|
|
63
70
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-lines.js","sourceRoot":"","sources":["../../../src/browser/dirty-diff/content-lines.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;
|
|
1
|
+
{"version":3,"file":"content-lines.js","sourceRoot":"","sources":["../../../src/browser/dirty-diff/content-lines.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ContentLinesArrayLike } from './content-lines';
|
|
2
|
+
import { Position, Range } from '@theia/core/shared/vscode-languageserver-protocol';
|
|
2
3
|
export declare class DiffComputer {
|
|
3
4
|
computeDiff(previous: ContentLinesArrayLike, current: ContentLinesArrayLike): DiffResult[];
|
|
4
5
|
computeDirtyDiff(previous: ContentLinesArrayLike, current: ContentLinesArrayLike): DirtyDiff;
|
|
@@ -10,21 +11,29 @@ export interface DiffResult {
|
|
|
10
11
|
removed?: boolean;
|
|
11
12
|
}
|
|
12
13
|
export interface DirtyDiff {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
readonly
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
*/
|
|
24
|
-
readonly modified: LineRange[];
|
|
14
|
+
readonly changes: readonly Change[];
|
|
15
|
+
}
|
|
16
|
+
export interface Change {
|
|
17
|
+
readonly previousRange: LineRange;
|
|
18
|
+
readonly currentRange: LineRange;
|
|
19
|
+
}
|
|
20
|
+
export declare namespace Change {
|
|
21
|
+
function isAddition(change: Change): boolean;
|
|
22
|
+
function isRemoval(change: Change): boolean;
|
|
23
|
+
function isModification(change: Change): boolean;
|
|
25
24
|
}
|
|
26
25
|
export interface LineRange {
|
|
27
|
-
start: number;
|
|
28
|
-
end: number;
|
|
26
|
+
readonly start: number;
|
|
27
|
+
readonly end: number;
|
|
28
|
+
}
|
|
29
|
+
export declare namespace LineRange {
|
|
30
|
+
function create(start: number, end: number): LineRange;
|
|
31
|
+
function createSingleLineRange(line: number): LineRange;
|
|
32
|
+
function createEmptyLineRange(line: number): LineRange;
|
|
33
|
+
function isEmpty(range: LineRange): boolean;
|
|
34
|
+
function getStartPosition(range: LineRange): Position;
|
|
35
|
+
function getEndPosition(range: LineRange): Position;
|
|
36
|
+
function toRange(range: LineRange): Range;
|
|
37
|
+
function getLineCount(range: LineRange): number;
|
|
29
38
|
}
|
|
30
39
|
//# sourceMappingURL=diff-computer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff-computer.d.ts","sourceRoot":"","sources":["../../../src/browser/dirty-diff/diff-computer.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"diff-computer.d.ts","sourceRoot":"","sources":["../../../src/browser/dirty-diff/diff-computer.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAY,MAAM,mDAAmD,CAAC;AAE9F,qBAAa,YAAY;IAErB,WAAW,CAAC,QAAQ,EAAE,qBAAqB,EAAE,OAAO,EAAE,qBAAqB,GAAG,UAAU,EAAE;IAK1F,gBAAgB,CAAC,QAAQ,EAAE,qBAAqB,EAAE,OAAO,EAAE,qBAAqB,GAAG,SAAS;CAiD/F;AAiCD,MAAM,WAAW,UAAU;IACvB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,SAAS;IACtB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,MAAM;IACnB,QAAQ,CAAC,aAAa,EAAE,SAAS,CAAC;IAClC,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC;CACpC;AAED,yBAAiB,MAAM,CAAC;IACpB,SAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAElD;IACD,SAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEjD;IACD,SAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEtD;CACJ;AAED,MAAM,WAAW,SAAS;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACxB;AAED,yBAAiB,SAAS,CAAC;IACvB,SAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAK5D;IACD,SAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAE7D;IACD,SAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAE5D;IACD,SAAgB,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAEjD;IACD,SAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ,CAK3D;IACD,SAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ,CAKzD;IACD,SAAgB,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,KAAK,CAE/C;IACD,SAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAErD;CACJ"}
|
|
@@ -15,65 +15,66 @@
|
|
|
15
15
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
16
|
// *****************************************************************************
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.DiffComputer = void 0;
|
|
18
|
+
exports.LineRange = exports.Change = exports.DiffComputer = void 0;
|
|
19
19
|
const jsdiff = require("diff");
|
|
20
|
+
const vscode_languageserver_protocol_1 = require("@theia/core/shared/vscode-languageserver-protocol");
|
|
20
21
|
class DiffComputer {
|
|
21
22
|
computeDiff(previous, current) {
|
|
22
23
|
const diffResult = diffArrays(previous, current);
|
|
23
24
|
return diffResult;
|
|
24
25
|
}
|
|
25
26
|
computeDirtyDiff(previous, current) {
|
|
26
|
-
const
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
let
|
|
31
|
-
|
|
32
|
-
const
|
|
33
|
-
const next = changes[i + 1];
|
|
27
|
+
const changes = [];
|
|
28
|
+
const diffResult = this.computeDiff(previous, current);
|
|
29
|
+
let currentRevisionLine = -1;
|
|
30
|
+
let previousRevisionLine = -1;
|
|
31
|
+
for (let i = 0; i < diffResult.length; i++) {
|
|
32
|
+
const change = diffResult[i];
|
|
33
|
+
const next = diffResult[i + 1];
|
|
34
34
|
if (change.added) {
|
|
35
35
|
// case: addition
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
added.push({ start, end });
|
|
39
|
-
lastLine = end;
|
|
36
|
+
changes.push({ previousRange: LineRange.createEmptyLineRange(previousRevisionLine + 1), currentRange: toLineRange(change) });
|
|
37
|
+
currentRevisionLine += change.count;
|
|
40
38
|
}
|
|
41
39
|
else if (change.removed && next && next.added) {
|
|
42
40
|
const isFirstChange = i === 0;
|
|
43
|
-
const isLastChange = i ===
|
|
41
|
+
const isLastChange = i === diffResult.length - 2;
|
|
44
42
|
const isNextEmptyLine = next.value.length > 0 && current[next.value[0]].length === 0;
|
|
45
43
|
const isPrevEmptyLine = change.value.length > 0 && previous[change.value[0]].length === 0;
|
|
46
44
|
if (isFirstChange && isNextEmptyLine) {
|
|
47
45
|
// special case: removing at the beginning
|
|
48
|
-
|
|
46
|
+
changes.push({ previousRange: toLineRange(change), currentRange: LineRange.createEmptyLineRange(0) });
|
|
47
|
+
previousRevisionLine += change.count;
|
|
49
48
|
}
|
|
50
49
|
else if (isFirstChange && isPrevEmptyLine) {
|
|
51
50
|
// special case: adding at the beginning
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
added.push({ start, end });
|
|
55
|
-
lastLine = end;
|
|
51
|
+
changes.push({ previousRange: LineRange.createEmptyLineRange(0), currentRange: toLineRange(next) });
|
|
52
|
+
currentRevisionLine += next.count;
|
|
56
53
|
}
|
|
57
54
|
else if (isLastChange && isNextEmptyLine) {
|
|
58
|
-
|
|
55
|
+
changes.push({ previousRange: toLineRange(change), currentRange: LineRange.createEmptyLineRange(currentRevisionLine + 2) });
|
|
56
|
+
previousRevisionLine += change.count;
|
|
59
57
|
}
|
|
60
58
|
else {
|
|
61
59
|
// default case is a modification
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
lastLine = end;
|
|
60
|
+
changes.push({ previousRange: toLineRange(change), currentRange: toLineRange(next) });
|
|
61
|
+
currentRevisionLine += next.count;
|
|
62
|
+
previousRevisionLine += change.count;
|
|
66
63
|
}
|
|
67
64
|
i++; // consume next eagerly
|
|
68
65
|
}
|
|
69
66
|
else if (change.removed && !(next && next.added)) {
|
|
70
|
-
|
|
67
|
+
// case: removal
|
|
68
|
+
changes.push({ previousRange: toLineRange(change), currentRange: LineRange.createEmptyLineRange(currentRevisionLine + 1) });
|
|
69
|
+
previousRevisionLine += change.count;
|
|
71
70
|
}
|
|
72
71
|
else {
|
|
73
|
-
|
|
72
|
+
// case: unchanged region
|
|
73
|
+
currentRevisionLine += change.count;
|
|
74
|
+
previousRevisionLine += change.count;
|
|
74
75
|
}
|
|
75
76
|
}
|
|
76
|
-
return {
|
|
77
|
+
return { changes };
|
|
77
78
|
}
|
|
78
79
|
}
|
|
79
80
|
exports.DiffComputer = DiffComputer;
|
|
@@ -100,4 +101,67 @@ function diffArrays(oldArr, newArr) {
|
|
|
100
101
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
101
102
|
return arrayDiff.diff(oldArr, newArr);
|
|
102
103
|
}
|
|
104
|
+
function toLineRange({ value }) {
|
|
105
|
+
const [start, end] = value;
|
|
106
|
+
return LineRange.create(start, end + 1);
|
|
107
|
+
}
|
|
108
|
+
var Change;
|
|
109
|
+
(function (Change) {
|
|
110
|
+
function isAddition(change) {
|
|
111
|
+
return LineRange.isEmpty(change.previousRange);
|
|
112
|
+
}
|
|
113
|
+
Change.isAddition = isAddition;
|
|
114
|
+
function isRemoval(change) {
|
|
115
|
+
return LineRange.isEmpty(change.currentRange);
|
|
116
|
+
}
|
|
117
|
+
Change.isRemoval = isRemoval;
|
|
118
|
+
function isModification(change) {
|
|
119
|
+
return !isAddition(change) && !isRemoval(change);
|
|
120
|
+
}
|
|
121
|
+
Change.isModification = isModification;
|
|
122
|
+
})(Change = exports.Change || (exports.Change = {}));
|
|
123
|
+
var LineRange;
|
|
124
|
+
(function (LineRange) {
|
|
125
|
+
function create(start, end) {
|
|
126
|
+
if (start < 0 || end < 0 || start > end) {
|
|
127
|
+
throw new Error(`Invalid line range: { start: ${start}, end: ${end} }`);
|
|
128
|
+
}
|
|
129
|
+
return { start, end };
|
|
130
|
+
}
|
|
131
|
+
LineRange.create = create;
|
|
132
|
+
function createSingleLineRange(line) {
|
|
133
|
+
return create(line, line + 1);
|
|
134
|
+
}
|
|
135
|
+
LineRange.createSingleLineRange = createSingleLineRange;
|
|
136
|
+
function createEmptyLineRange(line) {
|
|
137
|
+
return create(line, line);
|
|
138
|
+
}
|
|
139
|
+
LineRange.createEmptyLineRange = createEmptyLineRange;
|
|
140
|
+
function isEmpty(range) {
|
|
141
|
+
return range.start === range.end;
|
|
142
|
+
}
|
|
143
|
+
LineRange.isEmpty = isEmpty;
|
|
144
|
+
function getStartPosition(range) {
|
|
145
|
+
if (isEmpty(range)) {
|
|
146
|
+
return getEndPosition(range);
|
|
147
|
+
}
|
|
148
|
+
return vscode_languageserver_protocol_1.Position.create(range.start, 0);
|
|
149
|
+
}
|
|
150
|
+
LineRange.getStartPosition = getStartPosition;
|
|
151
|
+
function getEndPosition(range) {
|
|
152
|
+
if (range.end < 1) {
|
|
153
|
+
return vscode_languageserver_protocol_1.Position.create(0, 0);
|
|
154
|
+
}
|
|
155
|
+
return vscode_languageserver_protocol_1.Position.create(range.end - 1, vscode_languageserver_protocol_1.uinteger.MAX_VALUE);
|
|
156
|
+
}
|
|
157
|
+
LineRange.getEndPosition = getEndPosition;
|
|
158
|
+
function toRange(range) {
|
|
159
|
+
return vscode_languageserver_protocol_1.Range.create(getStartPosition(range), getEndPosition(range));
|
|
160
|
+
}
|
|
161
|
+
LineRange.toRange = toRange;
|
|
162
|
+
function getLineCount(range) {
|
|
163
|
+
return range.end - range.start;
|
|
164
|
+
}
|
|
165
|
+
LineRange.getLineCount = getLineCount;
|
|
166
|
+
})(LineRange = exports.LineRange || (exports.LineRange = {}));
|
|
103
167
|
//# sourceMappingURL=diff-computer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff-computer.js","sourceRoot":"","sources":["../../../src/browser/dirty-diff/diff-computer.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAEhF,+BAA+B;
|
|
1
|
+
{"version":3,"file":"diff-computer.js","sourceRoot":"","sources":["../../../src/browser/dirty-diff/diff-computer.ts"],"names":[],"mappings":"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"}
|