mirror of
https://github.com/microsoft/vscode.git
synced 2026-08-29 09:09:03 +01:00
Merge pull request #165147 from microsoft/hediet/integrated-mule
Implements diffing fixture tests. Fixes #165041
This commit is contained in:
Vendored
+4
-2
@@ -12,7 +12,8 @@
|
||||
}
|
||||
},
|
||||
"files.associations": {
|
||||
"cglicenses.json": "jsonc"
|
||||
"cglicenses.json": "jsonc",
|
||||
"*.tst": "typescript"
|
||||
},
|
||||
"search.exclude": {
|
||||
"**/node_modules": true,
|
||||
@@ -27,7 +28,8 @@
|
||||
"test/automation/out/**": true,
|
||||
"test/integration/browser/out/**": true,
|
||||
"src/vs/base/test/node/uri.test.data.txt": true,
|
||||
"src/vs/workbench/api/test/browser/extHostDocumentData.test.perf-data.ts": true
|
||||
"src/vs/workbench/api/test/browser/extHostDocumentData.test.perf-data.ts": true,
|
||||
"src/vs/editor/test/node/diffing/fixtures/**": true,
|
||||
},
|
||||
"lcov.path": [
|
||||
"./.build/coverage/lcov.info",
|
||||
|
||||
@@ -85,11 +85,11 @@ export function shiftSequenceDiffs(sequence1: ISequence, sequence2: ISequence, s
|
||||
const diff = sequenceDiffs[i];
|
||||
if (diff.seq1Range.isEmpty) {
|
||||
const seq2PrevEndExclusive = (i > 0 ? sequenceDiffs[i - 1].seq2Range.endExclusive : -1);
|
||||
const seq2NextStart = (i + 1 < sequenceDiffs.length ? sequenceDiffs[i + 1].seq2Range.start : sequence2.length + 1);
|
||||
const seq2NextStart = (i + 1 < sequenceDiffs.length ? sequenceDiffs[i + 1].seq2Range.start : sequence2.length);
|
||||
sequenceDiffs[i] = shiftDiffToBetterPosition(diff, sequence1, sequence2, seq2NextStart, seq2PrevEndExclusive);
|
||||
} else if (diff.seq2Range.isEmpty) {
|
||||
const seq1PrevEndExclusive = (i > 0 ? sequenceDiffs[i - 1].seq1Range.endExclusive : -1);
|
||||
const seq1NextStart = (i + 1 < sequenceDiffs.length ? sequenceDiffs[i + 1].seq1Range.start : sequence1.length + 1);
|
||||
const seq1NextStart = (i + 1 < sequenceDiffs.length ? sequenceDiffs[i + 1].seq1Range.start : sequence1.length);
|
||||
sequenceDiffs[i] = shiftDiffToBetterPosition(diff.reverse(), sequence2, sequence1, seq1NextStart, seq1PrevEndExclusive).reverse();
|
||||
}
|
||||
}
|
||||
@@ -102,7 +102,7 @@ function shiftDiffToBetterPosition(diff: SequenceDiff, sequence1: ISequence, seq
|
||||
|
||||
// don't touch previous or next!
|
||||
let deltaBefore = 1;
|
||||
while (diff.seq1Range.start - deltaBefore > seq2PrevEndExclusive &&
|
||||
while (diff.seq2Range.start - deltaBefore > seq2PrevEndExclusive &&
|
||||
sequence2.getElement(diff.seq2Range.start - deltaBefore) ===
|
||||
sequence2.getElement(diff.seq2Range.endExclusive - deltaBefore) && deltaBefore < maxShiftLimit) {
|
||||
deltaBefore++;
|
||||
@@ -110,7 +110,7 @@ function shiftDiffToBetterPosition(diff: SequenceDiff, sequence1: ISequence, seq
|
||||
deltaBefore--;
|
||||
|
||||
let deltaAfter = 1;
|
||||
while (diff.seq1Range.start + deltaAfter < seq2NextStart &&
|
||||
while (diff.seq2Range.start + deltaAfter < seq2NextStart &&
|
||||
sequence2.getElement(diff.seq2Range.start + deltaAfter) ===
|
||||
sequence2.getElement(diff.seq2Range.endExclusive + deltaAfter) && deltaAfter < maxShiftLimit) {
|
||||
deltaAfter++;
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
# Diffing Fixture Tests
|
||||
|
||||
Every folder in `fixtures` represents a test.
|
||||
The file that starts with `1.` is diffed against the file that starts with `2.`. Use `tst` instead of `ts` to avoid compiler/linter errors for typescript diff files.
|
||||
|
||||
* Missing `*.expected.diff.json` are created automatically (as well as an `*.invalid.diff.json` file).
|
||||
* If the actual diff does not equal the expected diff, the expected file is updated automatically. The previous value of the expected file is written to `*.invalid.diff.json`.
|
||||
* The test will fail if there are any `*.invalid.diff.json` files. This makes sure that the test keeps failing even if it is run a second time.
|
||||
|
||||
When changing the diffing algorithm, run the fixture tests, review the diff of the `*.expected.diff.json` files and delete all `*.invalid.diff.json` files.
|
||||
@@ -0,0 +1,99 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import assert = require('assert');
|
||||
import { readdirSync, readFileSync, existsSync, writeFileSync } from 'fs';
|
||||
import { join, resolve } from 'path';
|
||||
import { FileAccess } from 'vs/base/common/network';
|
||||
import { SmartLinesDiffComputer } from 'vs/editor/common/diff/smartLinesDiffComputer';
|
||||
import { StandardLinesDiffComputer } from 'vs/editor/common/diff/standardLinesDiffComputer';
|
||||
|
||||
suite('diff fixtures', () => {
|
||||
const fixturesOutDir = FileAccess.asFileUri('vs/editor/test/node/diffing/fixtures').fsPath;
|
||||
// We want the dir in src, so we can directly update the source files if they disagree and create invalid files to capture the previous state.
|
||||
// This makes it very easy to update the fixtures.
|
||||
const fixturesSrcDir = resolve(fixturesOutDir).replaceAll('\\', '/').replace('/out/vs/editor/', '/src/vs/editor/');
|
||||
const folders = readdirSync(fixturesSrcDir);
|
||||
|
||||
for (const folder of folders) {
|
||||
for (const diffingAlgoName of ['smart', 'experimental']) {
|
||||
test(`${folder}-${diffingAlgoName}`, () => {
|
||||
const folderPath = join(fixturesSrcDir, folder);
|
||||
const files = readdirSync(folderPath);
|
||||
|
||||
const firstFileName = files.find(f => f.startsWith('1.'))!;
|
||||
const secondFileName = files.find(f => f.startsWith('2.'))!;
|
||||
|
||||
const firstContentLines = readFileSync(join(folderPath, firstFileName), 'utf8').split(/\r\n|\r|\n/);
|
||||
const secondContentLines = readFileSync(join(folderPath, secondFileName), 'utf8').split(/\r\n|\r|\n/);
|
||||
|
||||
const diffingAlgo = diffingAlgoName === 'smart' ? new SmartLinesDiffComputer() : new StandardLinesDiffComputer();
|
||||
|
||||
const diff = diffingAlgo.computeDiff(firstContentLines, secondContentLines, { ignoreTrimWhitespace: false, maxComputationTime: Number.MAX_SAFE_INTEGER });
|
||||
|
||||
const actualDiffingResult: DiffingResult = {
|
||||
originalFileName: `./${firstFileName}`,
|
||||
modifiedFileName: `./${secondFileName}`,
|
||||
diffs: diff.changes.map<IDetailedDiff>(c => ({
|
||||
originalRange: c.originalRange.toString(),
|
||||
modifiedRange: c.modifiedRange.toString(),
|
||||
innerChanges: c.innerChanges?.map<IDiff>(c => ({
|
||||
originalRange: c.originalRange.toString(),
|
||||
modifiedRange: c.modifiedRange.toString(),
|
||||
})) || null
|
||||
}))
|
||||
};
|
||||
|
||||
const expectedFilePath = join(folderPath, `${diffingAlgoName}.expected.diff.json`);
|
||||
const invalidFilePath = join(folderPath, `${diffingAlgoName}.invalid.diff.json`);
|
||||
|
||||
const expectedFileContentFromActual = JSON.stringify(actualDiffingResult, null, '\t');
|
||||
|
||||
const invalidExists = existsSync(invalidFilePath);
|
||||
|
||||
if (!existsSync(expectedFilePath)) {
|
||||
writeFileSync(expectedFilePath, expectedFileContentFromActual);
|
||||
writeFileSync(invalidFilePath, '');
|
||||
throw new Error('No expected file! Expected and invalid files were written. Delete the invalid file to make the test pass.');
|
||||
} else {
|
||||
const expectedFileContent = readFileSync(invalidExists ? invalidFilePath : expectedFilePath, 'utf8');
|
||||
const expectedFileDiffResult: DiffingResult = JSON.parse(expectedFileContent);
|
||||
|
||||
try {
|
||||
assert.deepStrictEqual(actualDiffingResult, expectedFileDiffResult);
|
||||
} catch (e) {
|
||||
if (!invalidExists) {
|
||||
writeFileSync(invalidFilePath, expectedFileContent);
|
||||
}
|
||||
writeFileSync(expectedFilePath, expectedFileContentFromActual);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
if (invalidExists) {
|
||||
throw new Error('Invalid file exists and agrees with expected file! Delete the invalid file to make the test pass.');
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
interface DiffingResult {
|
||||
originalFileName: string;
|
||||
modifiedFileName: string;
|
||||
|
||||
diffs: IDetailedDiff[];
|
||||
}
|
||||
|
||||
interface IDetailedDiff {
|
||||
originalRange: string; // [startLineNumber, endLineNumberExclusive)
|
||||
modifiedRange: string; // [startLineNumber, endLineNumberExclusive)
|
||||
innerChanges: IDiff[] | null;
|
||||
}
|
||||
|
||||
interface IDiff {
|
||||
originalRange: string; // [1,18 -> 1,19]
|
||||
modifiedRange: string; // [1,18 -> 1,19]
|
||||
}
|
||||
@@ -0,0 +1,131 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { CompareResult } from 'vs/base/common/arrays';
|
||||
import { autorun, derived } from 'vs/base/common/observable';
|
||||
import { IModelDeltaDecoration, MinimapPosition, OverviewRulerLane } from 'vs/editor/common/model';
|
||||
import { localize } from 'vs/nls';
|
||||
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
||||
import { LineRange } from 'vs/workbench/contrib/mergeEditor/browser/model/lineRange';
|
||||
import { applyObservableDecorations, join } from 'vs/workbench/contrib/mergeEditor/browser/utils';
|
||||
import { handledConflictMinimapOverViewRulerColor, unhandledConflictMinimapOverViewRulerColor } from 'vs/workbench/contrib/mergeEditor/browser/view/colors';
|
||||
import { CodeEditorView } from './codeEditorView';
|
||||
|
||||
export class ResultCodeEditorView extends CodeEditorView {
|
||||
private readonly decorations = derived('result.decorations', reader => {
|
||||
const viewModel = this.viewModel.read(reader);
|
||||
if (!viewModel) {
|
||||
return [];
|
||||
}
|
||||
const model = viewModel.model;
|
||||
const result = new Array<IModelDeltaDecoration>();
|
||||
|
||||
const baseRangeWithStoreAndTouchingDiffs = join(
|
||||
model.modifiedBaseRanges.read(reader),
|
||||
model.resultDiffs.read(reader),
|
||||
(baseRange, diff) => baseRange.baseRange.touches(diff.inputRange)
|
||||
? CompareResult.neitherLessOrGreaterThan
|
||||
: LineRange.compareByStart(
|
||||
baseRange.baseRange,
|
||||
diff.inputRange
|
||||
)
|
||||
);
|
||||
|
||||
const activeModifiedBaseRange = viewModel.activeModifiedBaseRange.read(reader);
|
||||
|
||||
for (const m of baseRangeWithStoreAndTouchingDiffs) {
|
||||
const modifiedBaseRange = m.left;
|
||||
|
||||
if (modifiedBaseRange) {
|
||||
const range = model.getRangeInResult(modifiedBaseRange.baseRange, reader).toInclusiveRange();
|
||||
if (range) {
|
||||
const blockClassNames = ['merge-editor-block'];
|
||||
const isHandled = model.isHandled(modifiedBaseRange).read(reader);
|
||||
if (isHandled) {
|
||||
blockClassNames.push('handled');
|
||||
}
|
||||
if (modifiedBaseRange === activeModifiedBaseRange) {
|
||||
blockClassNames.push('focused');
|
||||
}
|
||||
blockClassNames.push('result');
|
||||
|
||||
result.push({
|
||||
range,
|
||||
options: {
|
||||
isWholeLine: true,
|
||||
blockClassName: blockClassNames.join(' '),
|
||||
description: 'Result Diff',
|
||||
minimap: {
|
||||
position: MinimapPosition.Gutter,
|
||||
color: { id: isHandled ? handledConflictMinimapOverViewRulerColor : unhandledConflictMinimapOverViewRulerColor },
|
||||
},
|
||||
overviewRuler: {
|
||||
position: OverviewRulerLane.Center,
|
||||
color: { id: isHandled ? handledConflictMinimapOverViewRulerColor : unhandledConflictMinimapOverViewRulerColor },
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
for (const diff of m.rights) {
|
||||
const range = diff.outputRange.toInclusiveRange();
|
||||
if (range) {
|
||||
result.push({
|
||||
range,
|
||||
options: {
|
||||
className: `merge-editor-diff result`,
|
||||
description: 'Merge Editor',
|
||||
isWholeLine: true,
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (diff.rangeMappings) {
|
||||
for (const d of diff.rangeMappings) {
|
||||
result.push({
|
||||
range: d.outputRange,
|
||||
options: {
|
||||
className: `merge-editor-diff-word result`,
|
||||
description: 'Merge Editor'
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
});
|
||||
|
||||
constructor(
|
||||
@IInstantiationService instantiationService: IInstantiationService
|
||||
) {
|
||||
super(instantiationService);
|
||||
|
||||
this._register(applyObservableDecorations(this.editor, this.decorations));
|
||||
|
||||
|
||||
this._register(autorun('update remainingConflicts label', reader => {
|
||||
const model = this.model.read(reader);
|
||||
if (!model) {
|
||||
return;
|
||||
}
|
||||
const count = model.unhandledConflictsCount.read(reader);
|
||||
|
||||
this.htmlElements.detail.innerText = count === 1
|
||||
? localize(
|
||||
'mergeEditor.remainingConflicts',
|
||||
'{0} Conflict Remaining',
|
||||
count
|
||||
)
|
||||
: localize(
|
||||
'mergeEditor.remainingConflict',
|
||||
'{0} Conflicts Remaining ',
|
||||
count
|
||||
);
|
||||
|
||||
}));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,134 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { CompareResult } from 'vs/base/common/arrays';
|
||||
import { autorun, derived } from 'vs/base/common/observable';
|
||||
import { IModelDeltaDecoration, MinimapPosition, OverviewRulerLane } from 'vs/editor/common/model';
|
||||
import { localize } from 'vs/nls';
|
||||
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
||||
import { LineRange } from 'vs/workbench/contrib/mergeEditor/browser/model/lineRange';
|
||||
import { applyObservableDecorations, join } from 'vs/workbench/contrib/mergeEditor/browser/utils';
|
||||
import { handledConflictMinimapOverViewRulerColor, unhandledConflictMinimapOverViewRulerColor } from 'vs/workbench/contrib/mergeEditor/browser/view/colors';
|
||||
import { CodeEditorView } from './codeEditorView';
|
||||
|
||||
export class ResultCodeEditorView extends CodeEditorView {
|
||||
private readonly decorations = derived('result.decorations', reader => {
|
||||
const viewModel = this.viewModel.read(reader);
|
||||
if (!viewModel) {
|
||||
return [];
|
||||
}
|
||||
const model = viewModel.model;
|
||||
const result = new Array<IModelDeltaDecoration>();
|
||||
|
||||
const baseRangeWithStoreAndTouchingDiffs = join(
|
||||
model.modifiedBaseRanges.read(reader),
|
||||
model.resultDiffs.read(reader),
|
||||
(baseRange, diff) => baseRange.baseRange.touches(diff.inputRange)
|
||||
? CompareResult.neitherLessOrGreaterThan
|
||||
: LineRange.compareByStart(
|
||||
baseRange.baseRange,
|
||||
diff.inputRange
|
||||
)
|
||||
);
|
||||
|
||||
const activeModifiedBaseRange = viewModel.activeModifiedBaseRange.read(reader);
|
||||
|
||||
for (const m of baseRangeWithStoreAndTouchingDiffs) {
|
||||
const modifiedBaseRange = m.left;
|
||||
|
||||
if (modifiedBaseRange) {
|
||||
const range = model.getRangeInResult(modifiedBaseRange.baseRange, reader).toInclusiveRange();
|
||||
if (range) {
|
||||
const blockClassNames = ['merge-editor-block'];
|
||||
const isHandled = model.isHandled(modifiedBaseRange).read(reader);
|
||||
if (isHandled) {
|
||||
blockClassNames.push('handled');
|
||||
}
|
||||
if (modifiedBaseRange === activeModifiedBaseRange) {
|
||||
blockClassNames.push('focused');
|
||||
}
|
||||
blockClassNames.push('result');
|
||||
|
||||
result.push({
|
||||
range,
|
||||
options: {
|
||||
isWholeLine: true,
|
||||
blockClassName: blockClassNames.join(' '),
|
||||
description: 'Result Diff',
|
||||
minimap: {
|
||||
position: MinimapPosition.Gutter,
|
||||
color: { id: isHandled ? handledConflictMinimapOverViewRulerColor : unhandledConflictMinimapOverViewRulerColor },
|
||||
},
|
||||
overviewRuler: {
|
||||
position: OverviewRulerLane.Center,
|
||||
color: { id: isHandled ? handledConflictMinimapOverViewRulerColor : unhandledConflictMinimapOverViewRulerColor },
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (!modifiedBaseRange || modifiedBaseRange.isConflicting) {
|
||||
for (const diff of m.rights) {
|
||||
const range = diff.outputRange.toInclusiveRange();
|
||||
if (range) {
|
||||
result.push({
|
||||
range,
|
||||
options: {
|
||||
className: `merge-editor-diff result`,
|
||||
description: 'Merge Editor',
|
||||
isWholeLine: true,
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (diff.rangeMappings) {
|
||||
for (const d of diff.rangeMappings) {
|
||||
result.push({
|
||||
range: d.outputRange,
|
||||
options: {
|
||||
className: `merge-editor-diff-word result`,
|
||||
description: 'Merge Editor'
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
});
|
||||
|
||||
constructor(
|
||||
@IInstantiationService instantiationService: IInstantiationService
|
||||
) {
|
||||
super(instantiationService);
|
||||
|
||||
this._register(applyObservableDecorations(this.editor, this.decorations));
|
||||
|
||||
|
||||
this._register(autorun('update remainingConflicts label', reader => {
|
||||
const model = this.model.read(reader);
|
||||
if (!model) {
|
||||
return;
|
||||
}
|
||||
const count = model.unhandledConflictsCount.read(reader);
|
||||
|
||||
this.htmlElements.detail.innerText = count === 1
|
||||
? localize(
|
||||
'mergeEditor.remainingConflicts',
|
||||
'{0} Conflict Remaining',
|
||||
count
|
||||
)
|
||||
: localize(
|
||||
'mergeEditor.remainingConflict',
|
||||
'{0} Conflicts Remaining ',
|
||||
count
|
||||
);
|
||||
|
||||
}));
|
||||
}
|
||||
}
|
||||
+122
@@ -0,0 +1,122 @@
|
||||
{
|
||||
"originalFileName": "./1.tst",
|
||||
"modifiedFileName": "./2.tst",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[73,85)",
|
||||
"modifiedRange": "[73,87)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[73,1 -> 73,1]",
|
||||
"modifiedRange": "[73,1 -> 75,1]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[73,1 -> 73,1]",
|
||||
"modifiedRange": "[75,1 -> 75,2]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[74,1 -> 74,1]",
|
||||
"modifiedRange": "[76,1 -> 76,2]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[75,1 -> 75,1]",
|
||||
"modifiedRange": "[77,1 -> 77,2]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[76,1 -> 76,1]",
|
||||
"modifiedRange": "[78,1 -> 78,2]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[77,1 -> 77,1]",
|
||||
"modifiedRange": "[79,1 -> 79,2]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[78,1 -> 78,1]",
|
||||
"modifiedRange": "[80,1 -> 80,2]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[79,1 -> 79,1]",
|
||||
"modifiedRange": "[81,1 -> 81,2]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[80,1 -> 80,1]",
|
||||
"modifiedRange": "[82,1 -> 82,2]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[81,1 -> 81,1]",
|
||||
"modifiedRange": "[83,1 -> 83,2]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[82,1 -> 82,1]",
|
||||
"modifiedRange": "[84,1 -> 84,2]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[83,1 -> 83,1]",
|
||||
"modifiedRange": "[85,1 -> 85,2]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[84,1 -> 84,1]",
|
||||
"modifiedRange": "[86,1 -> 86,2]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[86,98)",
|
||||
"modifiedRange": "[88,101)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[86,1 -> 86,1]",
|
||||
"modifiedRange": "[88,1 -> 88,2]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[87,1 -> 87,1]",
|
||||
"modifiedRange": "[89,1 -> 89,2]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[88,1 -> 88,1]",
|
||||
"modifiedRange": "[90,1 -> 90,2]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[89,1 -> 89,1]",
|
||||
"modifiedRange": "[91,1 -> 91,2]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[90,1 -> 90,1]",
|
||||
"modifiedRange": "[92,1 -> 92,2]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[91,1 -> 91,1]",
|
||||
"modifiedRange": "[93,1 -> 93,2]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[92,1 -> 92,1]",
|
||||
"modifiedRange": "[94,1 -> 94,2]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[93,1 -> 93,1]",
|
||||
"modifiedRange": "[95,1 -> 95,2]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[94,1 -> 94,1]",
|
||||
"modifiedRange": "[96,1 -> 96,2]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[95,1 -> 95,1]",
|
||||
"modifiedRange": "[97,1 -> 97,2]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[96,1 -> 96,1]",
|
||||
"modifiedRange": "[98,1 -> 98,2]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[97,1 -> 97,1]",
|
||||
"modifiedRange": "[99,1 -> 99,2]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[98,1 -> 98,1]",
|
||||
"modifiedRange": "[100,1 -> 101,1]"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"originalFileName": "./1.tst",
|
||||
"modifiedFileName": "./2.tst",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[73,85)",
|
||||
"modifiedRange": "[73,87)",
|
||||
"innerChanges": null
|
||||
},
|
||||
{
|
||||
"originalRange": "[86,95)",
|
||||
"modifiedRange": "[88,98)",
|
||||
"innerChanges": null
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
|
||||
console.log(1)
|
||||
console.log(2)
|
||||
console.log(3)
|
||||
console.log(4)
|
||||
console.log(5)
|
||||
console.log(6)
|
||||
console.log(7)
|
||||
@@ -0,0 +1,9 @@
|
||||
console.log(1);
|
||||
console.log(2);
|
||||
console.log(3);
|
||||
console.log(4);
|
||||
|
||||
console.log(5);
|
||||
console.log(6);
|
||||
console.log(7);
|
||||
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"originalFileName": "./1.txt",
|
||||
"modifiedFileName": "./2.txt",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[1,1)",
|
||||
"modifiedRange": "[1,9)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[1,1 -> 1,1]",
|
||||
"modifiedRange": "[1,1 -> 9,1]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[2,9)",
|
||||
"modifiedRange": "[10,10)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[2,1 -> 9,1]",
|
||||
"modifiedRange": "[10,1 -> 10,1]"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"originalFileName": "./1.txt",
|
||||
"modifiedFileName": "./2.txt",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[1,1)",
|
||||
"modifiedRange": "[1,9)",
|
||||
"innerChanges": null
|
||||
},
|
||||
{
|
||||
"originalRange": "[2,9)",
|
||||
"modifiedRange": "[10,10)",
|
||||
"innerChanges": null
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
export function lineRangeMappingFromRangeMappings(alignments: RangeMapping[]): LineRangeMapping[] {
|
||||
const changes: LineRangeMapping[] = [];
|
||||
for (const g of group(
|
||||
alignments,
|
||||
(a1, a2) =>
|
||||
(a2.originalRange.startLineNumber - (a1.originalRange.endLineNumber - (a1.originalRange.endColumn > 1 ? 0 : 1)) <= 1)
|
||||
|| (a2.modifiedRange.startLineNumber - (a1.modifiedRange.endLineNumber - (a1.modifiedRange.endColumn > 1 ? 0 : 1)) <= 1)
|
||||
)) {
|
||||
const first = g[0];
|
||||
const last = g[g.length - 1];
|
||||
|
||||
changes.push(new LineRangeMapping(
|
||||
new LineRange(
|
||||
first.originalRange.startLineNumber,
|
||||
last.originalRange.endLineNumber + (last.originalRange.endColumn > 1 || last.modifiedRange.endColumn > 1 ? 1 : 0)
|
||||
),
|
||||
new LineRange(
|
||||
first.modifiedRange.startLineNumber,
|
||||
last.modifiedRange.endLineNumber + (last.originalRange.endColumn > 1 || last.modifiedRange.endColumn > 1 ? 1 : 0)
|
||||
),
|
||||
g
|
||||
));
|
||||
}
|
||||
|
||||
assertFn(() => {
|
||||
return checkAdjacentItems(changes,
|
||||
(m1, m2) => m2.originalRange.startLineNumber - m1.originalRange.endLineNumberExclusive === m2.modifiedRange.startLineNumber - m1.modifiedRange.endLineNumberExclusive &&
|
||||
// There has to be an unchanged line in between (otherwise both diffs should have been joined)
|
||||
m1.originalRange.endLineNumberExclusive < m2.originalRange.startLineNumber &&
|
||||
m1.modifiedRange.endLineNumberExclusive < m2.modifiedRange.startLineNumber,
|
||||
);
|
||||
});
|
||||
|
||||
|
||||
return changes;
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
export function lineRangeMappingFromRangeMappings(alignments: RangeMapping[]): LineRangeMapping[] {
|
||||
const changes: LineRangeMapping[] = [];
|
||||
for (const g of group(
|
||||
alignments,
|
||||
(a1, a2) =>
|
||||
(a2.originalRange.startLineNumber - (a1.originalRange.endLineNumber - (a1.originalRange.endColumn > 1 ? 0 : 1)) <= 1)
|
||||
|| (a2.modifiedRange.startLineNumber - (a1.modifiedRange.endLineNumber - (a1.modifiedRange.endColumn > 1 ? 0 : 1)) <= 1)
|
||||
)) {
|
||||
if (true) {
|
||||
const first = g[0];
|
||||
const last = g[g.length - 1];
|
||||
|
||||
changes.push(new LineRangeMapping(
|
||||
new LineRange(
|
||||
first.originalRange.startLineNumber,
|
||||
last.originalRange.endLineNumber + (last.originalRange.endColumn > 1 || last.modifiedRange.endColumn > 1 ? 1 : 0)
|
||||
),
|
||||
new LineRange(
|
||||
first.modifiedRange.startLineNumber,
|
||||
last.modifiedRange.endLineNumber + (last.originalRange.endColumn > 1 || last.modifiedRange.endColumn > 1 ? 1 : 0)
|
||||
),
|
||||
g
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
assertFn(() => {
|
||||
return checkAdjacentItems(changes,
|
||||
(m1, m2) => m2.originalRange.startLineNumber - m1.originalRange.endLineNumberExclusive === m2.modifiedRange.startLineNumber - m1.modifiedRange.endLineNumberExclusive &&
|
||||
// There has to be an unchanged line in between (otherwise both diffs should have been joined)
|
||||
m1.originalRange.endLineNumberExclusive < m2.originalRange.startLineNumber &&
|
||||
m1.modifiedRange.endLineNumberExclusive < m2.modifiedRange.startLineNumber,
|
||||
);
|
||||
});
|
||||
|
||||
|
||||
return changes;
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
{
|
||||
"originalFileName": "./1.tst",
|
||||
"modifiedFileName": "./2.tst",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[9,11)",
|
||||
"modifiedRange": "[9,12)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[9,1 -> 9,1]",
|
||||
"modifiedRange": "[9,1 -> 10,1]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[9,1 -> 9,1]",
|
||||
"modifiedRange": "[10,1 -> 10,2]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[10,1 -> 10,1]",
|
||||
"modifiedRange": "[11,1 -> 11,2]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[12,23)",
|
||||
"modifiedRange": "[13,25)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[12,1 -> 12,1]",
|
||||
"modifiedRange": "[13,1 -> 13,2]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[13,1 -> 13,1]",
|
||||
"modifiedRange": "[14,1 -> 14,2]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,1 -> 14,1]",
|
||||
"modifiedRange": "[15,1 -> 15,2]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[15,1 -> 15,1]",
|
||||
"modifiedRange": "[16,1 -> 16,2]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[16,1 -> 16,1]",
|
||||
"modifiedRange": "[17,1 -> 17,2]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[17,1 -> 17,1]",
|
||||
"modifiedRange": "[18,1 -> 18,2]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[18,1 -> 18,1]",
|
||||
"modifiedRange": "[19,1 -> 19,2]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[19,1 -> 19,1]",
|
||||
"modifiedRange": "[20,1 -> 20,2]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[20,1 -> 20,1]",
|
||||
"modifiedRange": "[21,1 -> 21,2]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[21,1 -> 21,1]",
|
||||
"modifiedRange": "[22,1 -> 22,2]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[22,1 -> 22,1]",
|
||||
"modifiedRange": "[23,1 -> 23,2]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[23,1 -> 23,1]",
|
||||
"modifiedRange": "[24,1 -> 25,1]"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"originalFileName": "./1.tst",
|
||||
"modifiedFileName": "./2.tst",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[9,11)",
|
||||
"modifiedRange": "[9,12)",
|
||||
"innerChanges": null
|
||||
},
|
||||
{
|
||||
"originalRange": "[12,23)",
|
||||
"modifiedRange": "[13,25)",
|
||||
"innerChanges": null
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
console.log(1);
|
||||
console.log(2);
|
||||
console.log(3);
|
||||
console.log(4);
|
||||
@@ -0,0 +1,3 @@
|
||||
console.log(1)
|
||||
console.log(2)
|
||||
console.log(4)
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"originalFileName": "./1.txt",
|
||||
"modifiedFileName": "./2.txt",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[1,5)",
|
||||
"modifiedRange": "[1,4)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[1,15 -> 1,16]",
|
||||
"modifiedRange": "[1,15 -> 1,15]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[2,15 -> 3,16]",
|
||||
"modifiedRange": "[2,15 -> 2,15]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[4,15 -> 4,16]",
|
||||
"modifiedRange": "[3,15 -> 3,15]"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"originalFileName": "./1.txt",
|
||||
"modifiedFileName": "./2.txt",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[1,5)",
|
||||
"modifiedRange": "[1,4)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[1,15 -> 1,16]",
|
||||
"modifiedRange": "[1,15 -> 1,15]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[2,15 -> 3,16]",
|
||||
"modifiedRange": "[2,15 -> 2,15]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[4,15 -> 4,16]",
|
||||
"modifiedRange": "[3,15 -> 3,15]"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,478 @@
|
||||
{
|
||||
"editor": [
|
||||
{
|
||||
"name": "vs/platform",
|
||||
"project": "vscode-editor"
|
||||
},
|
||||
{
|
||||
"name": "vs/editor/contrib",
|
||||
"project": "vscode-editor"
|
||||
},
|
||||
{
|
||||
"name": "vs/editor",
|
||||
"project": "vscode-editor"
|
||||
},
|
||||
{
|
||||
"name": "vs/base",
|
||||
"project": "vscode-editor"
|
||||
}
|
||||
],
|
||||
"workbench": [
|
||||
{
|
||||
"name": "vs/code",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/api/common",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/bulkEdit",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/cli",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/codeEditor",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/callHierarchy",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/typeHierarchy",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/codeActions",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/comments",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/debug",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/dialogs",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/emmet",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/experiments",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/extensions",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/externalTerminal",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/feedback",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/files",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/html",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/issue",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/inlayHints",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/interactive",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/languageStatus",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/keybindings",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/markers",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/mergeEditor",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/localization",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/logs",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/output",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/performance",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/preferences",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/notebook",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/quickaccess",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/userData",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/remote",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/relauncher",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/sash",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/scm",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/search",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/searchEditor",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/snippets",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/format",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/tags",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/surveys",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/tasks",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/testing",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/terminal",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/themes",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/trust",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/update",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/url",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/watermark",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/webview",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/webviewPanel",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/workspace",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/workspaces",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/customEditor",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/externalUriOpener",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/welcomeGettingStarted",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/welcomeOverlay",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/welcomePage",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/welcomeViews",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/welcomeWalkthrough",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/outline",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/userDataSync",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/editSessions",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/views",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/languageDetection",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/audioCues",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/deprecatedExtensionMigrator",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/offline",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/actions",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/authToken",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/backup",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/bulkEdit",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/clipboard",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/commands",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/configuration",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/configurationResolver",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/dialogs",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/editor",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/extensions",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/extensionManagement",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/files",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/history",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/log",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/integrity",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/keybinding",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/lifecycle",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/language",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/progress",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/remote",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/search",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/textfile",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/themes",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/textMate",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/workingCopy",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/workspaces",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/decorations",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/label",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/preferences",
|
||||
"project": "vscode-preferences"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/notification",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/userData",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/userDataSync",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/editSessions",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/views",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/timeline",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/localHistory",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/authentication",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/extensionRecommendations",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/gettingStarted",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/host",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/userDataProfile",
|
||||
"project": "vscode-profiles"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/userDataProfile",
|
||||
"project": "vscode-profiles"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,482 @@
|
||||
{
|
||||
"editor": [
|
||||
{
|
||||
"name": "vs/platform",
|
||||
"project": "vscode-editor"
|
||||
},
|
||||
{
|
||||
"name": "vs/editor/contrib",
|
||||
"project": "vscode-editor"
|
||||
},
|
||||
{
|
||||
"name": "vs/editor",
|
||||
"project": "vscode-editor"
|
||||
},
|
||||
{
|
||||
"name": "vs/base",
|
||||
"project": "vscode-editor"
|
||||
}
|
||||
],
|
||||
"workbench": [
|
||||
{
|
||||
"name": "vs/code",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/api/common",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/bulkEdit",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/cli",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/codeEditor",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/callHierarchy",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/typeHierarchy",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/codeActions",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/comments",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/debug",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/dialogs",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/emmet",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/experiments",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/extensions",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/externalTerminal",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/feedback",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/files",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/html",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/issue",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/inlayHints",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/interactive",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/languageStatus",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/keybindings",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/markers",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/mergeEditor",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/localization",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/logs",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/output",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/performance",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/preferences",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/notebook",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/quickaccess",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/userData",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/remote",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/relauncher",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/sash",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/scm",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/search",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/searchEditor",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/snippets",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/format",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/tags",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/surveys",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/tasks",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/testing",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/terminal",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/themes",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/trust",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/update",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/url",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/watermark",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/webview",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/webviewPanel",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/workspace",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/workspaces",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/customEditor",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/externalUriOpener",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/welcomeGettingStarted",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/welcomeOverlay",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/welcomePage",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/welcomeViews",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/welcomeWalkthrough",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/outline",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/userDataSync",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/editSessions",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/views",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/languageDetection",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/audioCues",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/deprecatedExtensionMigrator",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/bracketPairColorizer2Telemetry",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/offline",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/actions",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/authToken",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/backup",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/bulkEdit",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/clipboard",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/commands",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/configuration",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/configurationResolver",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/dialogs",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/editor",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/extensions",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/extensionManagement",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/files",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/history",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/log",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/integrity",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/keybinding",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/lifecycle",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/language",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/progress",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/remote",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/search",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/textfile",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/themes",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/textMate",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/workingCopy",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/workspaces",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/decorations",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/label",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/preferences",
|
||||
"project": "vscode-preferences"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/notification",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/userData",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/userDataSync",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/editSessions",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/views",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/timeline",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/localHistory",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/authentication",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/extensionRecommendations",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/gettingStarted",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/host",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/contrib/userDataProfile",
|
||||
"project": "vscode-profiles"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/userDataProfile",
|
||||
"project": "vscode-profiles"
|
||||
}
|
||||
]
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"originalFileName": "./1.json",
|
||||
"modifiedFileName": "./2.json",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[301,301)",
|
||||
"modifiedRange": "[301,305)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[301,1 -> 301,1]",
|
||||
"modifiedRange": "[301,1 -> 305,1]"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"originalFileName": "./1.json",
|
||||
"modifiedFileName": "./2.json",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[302,302)",
|
||||
"modifiedRange": "[302,306)",
|
||||
"innerChanges": null
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
console.log('foo');
|
||||
@@ -0,0 +1 @@
|
||||
console.log('foo');
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"originalFileName": "./1.js",
|
||||
"modifiedFileName": "./2.js",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[1,2)",
|
||||
"modifiedRange": "[1,2)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[1,20 -> 1,21]",
|
||||
"modifiedRange": "[1,20 -> 1,20]"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"originalFileName": "./1.js",
|
||||
"modifiedFileName": "./2.js",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[1,2)",
|
||||
"modifiedRange": "[1,2)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[1,20 -> 1,21]",
|
||||
"modifiedRange": "[1,20 -> 1,20]"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
class Test {
|
||||
public getDecorationsViewportData(viewRange: Range): IDecorationsViewportData {
|
||||
return null!;
|
||||
}
|
||||
|
||||
public getInlineDecorationsOnLine(lineNumber: number): InlineDecoration[] {
|
||||
const range = new Range(lineNumber, this._linesCollection.getViewLineMinColumn(lineNumber), lineNumber, this._linesCollection.getViewLineMaxColumn(lineNumber));
|
||||
return this._getDecorationsInRange(range).inlineDecorations[0];
|
||||
}
|
||||
|
||||
private _getDecorationsInRange(viewRange: Range): IDecorationsViewportData {
|
||||
const modelDecorations = this._linesCollection.getDecorationsInRange(viewRange, this.editorId, filterValidationDecorations(this.configuration.options));
|
||||
const startLineNumber = viewRange.startLineNumber;
|
||||
const endLineNumber = viewRange.endLineNumber;
|
||||
|
||||
const decorationsInViewport: ViewModelDecoration[] = [];
|
||||
let decorationsInViewportLen = 0;
|
||||
const inlineDecorations: InlineDecoration[][] = [];
|
||||
for (let j = startLineNumber; j <= endLineNumber; j++) {
|
||||
inlineDecorations[j - startLineNumber] = [];
|
||||
}
|
||||
|
||||
for (let i = 0, len = modelDecorations.length; i < len; i++) {
|
||||
const modelDecoration = modelDecorations[i];
|
||||
const decorationOptions = modelDecoration.options;
|
||||
|
||||
if (!isModelDecorationVisible(this.model, modelDecoration)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
const viewModelDecoration = this._getOrCreateViewModelDecoration(modelDecoration);
|
||||
const viewRange = viewModelDecoration.range;
|
||||
|
||||
decorationsInViewport[decorationsInViewportLen++] = viewModelDecoration;
|
||||
|
||||
if (decorationOptions.inlineClassName) {
|
||||
const inlineDecoration = new InlineDecoration(viewRange, decorationOptions.inlineClassName, decorationOptions.inlineClassNameAffectsLetterSpacing ? InlineDecorationType.RegularAffectingLetterSpacing : InlineDecorationType.Regular);
|
||||
const intersectedStartLineNumber = Math.max(startLineNumber, viewRange.startLineNumber);
|
||||
const intersectedEndLineNumber = Math.min(endLineNumber, viewRange.endLineNumber);
|
||||
for (let j = intersectedStartLineNumber; j <= intersectedEndLineNumber; j++) {
|
||||
inlineDecorations[j - startLineNumber].push(inlineDecoration);
|
||||
}
|
||||
}
|
||||
if (decorationOptions.beforeContentClassName) {
|
||||
if (startLineNumber <= viewRange.startLineNumber && viewRange.startLineNumber <= endLineNumber) {
|
||||
const inlineDecoration = new InlineDecoration(
|
||||
new Range(viewRange.startLineNumber, viewRange.startColumn, viewRange.startLineNumber, viewRange.startColumn),
|
||||
decorationOptions.beforeContentClassName,
|
||||
InlineDecorationType.Before
|
||||
);
|
||||
inlineDecorations[viewRange.startLineNumber - startLineNumber].push(inlineDecoration);
|
||||
}
|
||||
}
|
||||
if (decorationOptions.afterContentClassName) {
|
||||
if (startLineNumber <= viewRange.endLineNumber && viewRange.endLineNumber <= endLineNumber) {
|
||||
const inlineDecoration = new InlineDecoration(
|
||||
new Range(viewRange.endLineNumber, viewRange.endColumn, viewRange.endLineNumber, viewRange.endColumn),
|
||||
decorationOptions.afterContentClassName,
|
||||
InlineDecorationType.After
|
||||
);
|
||||
inlineDecorations[viewRange.endLineNumber - startLineNumber].push(inlineDecoration);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
decorations: decorationsInViewport,
|
||||
inlineDecorations: inlineDecorations
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
class Test {
|
||||
public getDecorationsViewportData(viewRange: Range): IDecorationsViewportData {
|
||||
return null!;
|
||||
}
|
||||
|
||||
private _getDecorationsViewportData(viewportRange: Range, onlyMinimapDecorations: boolean): IDecorationsViewportData {
|
||||
const modelDecorations = this._linesCollection.getDecorationsInRange(viewportRange, this.editorId, filterValidationDecorations(this.configuration.options), onlyMinimapDecorations);
|
||||
|
||||
const startLineNumber = viewportRange.startLineNumber;
|
||||
const endLineNumber = viewportRange.endLineNumber;
|
||||
|
||||
const decorationsInViewport: ViewModelDecoration[] = [];
|
||||
let decorationsInViewportLen = 0;
|
||||
const inlineDecorations: InlineDecoration[][] = [];
|
||||
for (let j = startLineNumber; j <= endLineNumber; j++) {
|
||||
inlineDecorations[j - startLineNumber] = [];
|
||||
}
|
||||
|
||||
for (let i = 0, len = modelDecorations.length; i < len; i++) {
|
||||
const modelDecoration = modelDecorations[i];
|
||||
const decorationOptions = modelDecoration.options;
|
||||
|
||||
if (!isModelDecorationVisible(this.model, modelDecoration)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
const viewModelDecoration = this._getOrCreateViewModelDecoration(modelDecoration);
|
||||
const viewRange = viewModelDecoration.range;
|
||||
|
||||
decorationsInViewport[decorationsInViewportLen++] = viewModelDecoration;
|
||||
|
||||
if (decorationOptions.inlineClassName) {
|
||||
const inlineDecoration = new InlineDecoration(viewRange, decorationOptions.inlineClassName, decorationOptions.inlineClassNameAffectsLetterSpacing ? InlineDecorationType.RegularAffectingLetterSpacing : InlineDecorationType.Regular);
|
||||
const intersectedStartLineNumber = Math.max(startLineNumber, viewRange.startLineNumber);
|
||||
const intersectedEndLineNumber = Math.min(endLineNumber, viewRange.endLineNumber);
|
||||
for (let j = intersectedStartLineNumber; j <= intersectedEndLineNumber; j++) {
|
||||
inlineDecorations[j - startLineNumber].push(inlineDecoration);
|
||||
}
|
||||
}
|
||||
if (decorationOptions.beforeContentClassName) {
|
||||
if (startLineNumber <= viewRange.startLineNumber && viewRange.startLineNumber <= endLineNumber) {
|
||||
const inlineDecoration = new InlineDecoration(
|
||||
new Range(viewRange.startLineNumber, viewRange.startColumn, viewRange.startLineNumber, viewRange.startColumn),
|
||||
decorationOptions.beforeContentClassName,
|
||||
InlineDecorationType.Before
|
||||
);
|
||||
inlineDecorations[viewRange.startLineNumber - startLineNumber].push(inlineDecoration);
|
||||
}
|
||||
}
|
||||
if (decorationOptions.afterContentClassName) {
|
||||
if (startLineNumber <= viewRange.endLineNumber && viewRange.endLineNumber <= endLineNumber) {
|
||||
const inlineDecoration = new InlineDecoration(
|
||||
new Range(viewRange.endLineNumber, viewRange.endColumn, viewRange.endLineNumber, viewRange.endColumn),
|
||||
decorationOptions.afterContentClassName,
|
||||
InlineDecorationType.After
|
||||
);
|
||||
inlineDecorations[viewRange.endLineNumber - startLineNumber].push(inlineDecoration);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
decorations: decorationsInViewport,
|
||||
inlineDecorations: inlineDecorations
|
||||
};
|
||||
}
|
||||
}
|
||||
+278
@@ -0,0 +1,278 @@
|
||||
{
|
||||
"originalFileName": "./1.tst",
|
||||
"modifiedFileName": "./2.tst",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[6,10)",
|
||||
"modifiedRange": "[6,8)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[6,3 -> 6,6]",
|
||||
"modifiedRange": "[6,3 -> 6,4]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[6,7 -> 6,8]",
|
||||
"modifiedRange": "[6,5 -> 6,9]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[6,9 -> 6,9]",
|
||||
"modifiedRange": "[6,10 -> 6,11]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[6,12 -> 6,18]",
|
||||
"modifiedRange": "[6,14 -> 6,14]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[6,29 -> 6,32]",
|
||||
"modifiedRange": "[6,25 -> 6,26]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[6,33 -> 6,34]",
|
||||
"modifiedRange": "[6,27 -> 6,27]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[6,35 -> 6,35]",
|
||||
"modifiedRange": "[6,28 -> 6,37]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[6,36 -> 6,37]",
|
||||
"modifiedRange": "[6,38 -> 6,39]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[6,38 -> 6,38]",
|
||||
"modifiedRange": "[6,40 -> 6,48]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[6,39 -> 6,39]",
|
||||
"modifiedRange": "[6,49 -> 6,50]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[6,40 -> 6,42]",
|
||||
"modifiedRange": "[6,51 -> 6,68]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[6,43 -> 6,44]",
|
||||
"modifiedRange": "[6,69 -> 6,72]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[6,45 -> 6,45]",
|
||||
"modifiedRange": "[6,73 -> 6,75]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[6,46 -> 6,46]",
|
||||
"modifiedRange": "[6,76 -> 6,82]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[6,48 -> 6,51]",
|
||||
"modifiedRange": "[6,84 -> 6,84]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[6,52 -> 6,52]",
|
||||
"modifiedRange": "[6,85 -> 6,88]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[6,53 -> 6,54]",
|
||||
"modifiedRange": "[6,89 -> 6,91]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[6,58 -> 6,63]",
|
||||
"modifiedRange": "[6,95 -> 6,95]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[6,73 -> 6,75]",
|
||||
"modifiedRange": "[6,105 -> 6,118]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[7,9 -> 7,13]",
|
||||
"modifiedRange": "[7,9 -> 7,12]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[7,14 -> 7,18]",
|
||||
"modifiedRange": "[7,13 -> 7,15]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[7,19 -> 7,22]",
|
||||
"modifiedRange": "[7,16 -> 7,19]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[7,23 -> 7,28]",
|
||||
"modifiedRange": "[7,20 -> 7,21]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[7,29 -> 7,29]",
|
||||
"modifiedRange": "[7,22 -> 7,23]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[7,30 -> 7,38]",
|
||||
"modifiedRange": "[7,24 -> 7,27]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[7,64 -> 7,66]",
|
||||
"modifiedRange": "[7,53 -> 7,54]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[7,67 -> 7,69]",
|
||||
"modifiedRange": "[7,55 -> 7,60]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[7,70 -> 7,70]",
|
||||
"modifiedRange": "[7,61 -> 7,62]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[7,71 -> 7,74]",
|
||||
"modifiedRange": "[7,63 -> 7,65]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[7,75 -> 7,80]",
|
||||
"modifiedRange": "[7,66 -> 7,68]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[7,81 -> 7,81]",
|
||||
"modifiedRange": "[7,69 -> 7,71]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[7,82 -> 7,83]",
|
||||
"modifiedRange": "[7,72 -> 7,73]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[7,84 -> 7,85]",
|
||||
"modifiedRange": "[7,74 -> 7,74]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[7,86 -> 7,91]",
|
||||
"modifiedRange": "[7,75 -> 7,78]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[7,92 -> 7,97]",
|
||||
"modifiedRange": "[7,79 -> 7,82]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[7,98 -> 7,98]",
|
||||
"modifiedRange": "[7,83 -> 7,84]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[7,99 -> 7,105]",
|
||||
"modifiedRange": "[7,85 -> 7,85]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[7,112 -> 7,116]",
|
||||
"modifiedRange": "[7,92 -> 7,92]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[7,117 -> 7,119]",
|
||||
"modifiedRange": "[7,93 -> 7,96]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[7,120 -> 7,120]",
|
||||
"modifiedRange": "[7,97 -> 7,104]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[7,121 -> 7,124]",
|
||||
"modifiedRange": "[7,105 -> 7,105]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[7,125 -> 7,130]",
|
||||
"modifiedRange": "[7,106 -> 7,106]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[7,131 -> 7,132]",
|
||||
"modifiedRange": "[7,107 -> 7,108]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[7,133 -> 7,133]",
|
||||
"modifiedRange": "[7,109 -> 7,111]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[7,134 -> 7,137]",
|
||||
"modifiedRange": "[7,112 -> 7,115]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[7,138 -> 7,138]",
|
||||
"modifiedRange": "[7,116 -> 7,117]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[7,139 -> 7,139]",
|
||||
"modifiedRange": "[7,118 -> 7,119]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[7,140 -> 7,141]",
|
||||
"modifiedRange": "[7,120 -> 7,123]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[7,142 -> 7,144]",
|
||||
"modifiedRange": "[7,124 -> 7,126]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[7,145 -> 7,148]",
|
||||
"modifiedRange": "[7,127 -> 7,127]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[7,149 -> 7,149]",
|
||||
"modifiedRange": "[7,128 -> 7,129]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[7,150 -> 8,5]",
|
||||
"modifiedRange": "[7,130 -> 7,130]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[8,6 -> 8,11]",
|
||||
"modifiedRange": "[7,131 -> 7,131]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[8,15 -> 8,21]",
|
||||
"modifiedRange": "[7,135 -> 7,135]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[8,23 -> 8,23]",
|
||||
"modifiedRange": "[7,137 -> 7,142]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[8,29 -> 8,44]",
|
||||
"modifiedRange": "[7,148 -> 7,148]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[8,45 -> 8,45]",
|
||||
"modifiedRange": "[7,149 -> 7,152]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[8,46 -> 8,46]",
|
||||
"modifiedRange": "[7,153 -> 7,160]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[8,48 -> 8,48]",
|
||||
"modifiedRange": "[7,162 -> 7,164]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[8,50 -> 8,51]",
|
||||
"modifiedRange": "[7,166 -> 7,170]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[8,62 -> 8,65]",
|
||||
"modifiedRange": "[7,181 -> 7,182]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[8,66 -> 9,3]",
|
||||
"modifiedRange": "[7,183 -> 7,183]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[11,15)",
|
||||
"modifiedRange": "[9,11)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[11,1 -> 13,1]",
|
||||
"modifiedRange": "[9,1 -> 9,1]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[13,31 -> 13,31]",
|
||||
"modifiedRange": "[9,31 -> 9,35]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,29 -> 14,29]",
|
||||
"modifiedRange": "[10,29 -> 10,33]"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
{
|
||||
"originalFileName": "./1.tst",
|
||||
"modifiedFileName": "./2.tst",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[6,10)",
|
||||
"modifiedRange": "[6,8)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[6,3 -> 6,9]",
|
||||
"modifiedRange": "[6,3 -> 6,11]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[6,12 -> 6,18]",
|
||||
"modifiedRange": "[6,14 -> 6,14]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[6,29 -> 6,54]",
|
||||
"modifiedRange": "[6,25 -> 6,91]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[6,58 -> 6,63]",
|
||||
"modifiedRange": "[6,95 -> 6,95]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[6,73 -> 6,75]",
|
||||
"modifiedRange": "[6,105 -> 6,118]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[7,9 -> 7,38]",
|
||||
"modifiedRange": "[7,9 -> 7,27]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[7,64 -> 7,105]",
|
||||
"modifiedRange": "[7,53 -> 7,85]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[7,112 -> 7,124]",
|
||||
"modifiedRange": "[7,92 -> 7,114]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[7,128 -> 8,10]",
|
||||
"modifiedRange": "[7,118 -> 7,130]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[8,15 -> 8,23]",
|
||||
"modifiedRange": "[7,135 -> 7,142]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[8,29 -> 8,51]",
|
||||
"modifiedRange": "[7,148 -> 7,170]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[8,62 -> 9,3]",
|
||||
"modifiedRange": "[7,181 -> 7,183]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[11,15)",
|
||||
"modifiedRange": "[9,11)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[11,1 -> 13,1]",
|
||||
"modifiedRange": "[9,1 -> 9,1]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[13,31 -> 13,31]",
|
||||
"modifiedRange": "[9,31 -> 9,35]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,29 -> 14,29]",
|
||||
"modifiedRange": "[10,29 -> 10,33]"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
import * as path from 'path';
|
||||
import { Command } from 'vscode';
|
||||
import * as nls from 'vscode-nls';
|
||||
|
||||
"()()()()()()()()()()()()()"
|
||||
@@ -0,0 +1,5 @@
|
||||
import * as path from 'path';
|
||||
import { Command, commands } from 'vscode';
|
||||
import * as nls from 'vscode-nls';
|
||||
|
||||
"Gallicum()est()divisa()in()partres()tres()quarum()unam()est()()()()()()()()()()()()"
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"originalFileName": "./1.tst",
|
||||
"modifiedFileName": "./2.tst",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[2,3)",
|
||||
"modifiedRange": "[2,3)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[2,17 -> 2,17]",
|
||||
"modifiedRange": "[2,17 -> 2,27]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[5,6)",
|
||||
"modifiedRange": "[5,6)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[5,2 -> 5,2]",
|
||||
"modifiedRange": "[5,2 -> 5,56]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[5,4 -> 5,4]",
|
||||
"modifiedRange": "[5,58 -> 5,61]"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"originalFileName": "./1.tst",
|
||||
"modifiedFileName": "./2.tst",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[2,3)",
|
||||
"modifiedRange": "[2,3)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[2,17 -> 2,17]",
|
||||
"modifiedRange": "[2,17 -> 2,27]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[5,6)",
|
||||
"modifiedRange": "[5,6)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[5,2 -> 5,4]",
|
||||
"modifiedRange": "[5,2 -> 5,61]"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
import { EditorSimpleWorker } from 'vs/editor/common/services/editorSimpleWorker';
|
||||
import { IEditorWorkerService, IUnicodeHighlightsResult } from 'vs/editor/common/services/editorWorker';
|
||||
import { IModelService } from 'vs/editor/common/services/model';
|
||||
|
||||
let x: [IEditorWorkerService, EditorSimpleWorker, IModelService, IUnicodeHighlightsResult];
|
||||
@@ -0,0 +1,6 @@
|
||||
import { EditorSimpleWorker } from 'vs/editor/common/services/editorSimpleWorker';
|
||||
import { IDiffComputationResult, IEditorWorkerService, IUnicodeHighlightsResult } from 'vs/editor/common/services/editorWorker';
|
||||
import { IModelService } from 'vs/editor/common/services/model';
|
||||
|
||||
let x: [IEditorWorkerService, EditorSimpleWorker, IModelService, IUnicodeHighlightsResult];
|
||||
let y: IDiffComputationResult;
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"originalFileName": "./1.tst",
|
||||
"modifiedFileName": "./2.tst",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[2,3)",
|
||||
"modifiedRange": "[2,3)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[2,9 -> 2,9]",
|
||||
"modifiedRange": "[2,9 -> 2,33]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[6,6)",
|
||||
"modifiedRange": "[6,7)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[6,1 -> 6,1]",
|
||||
"modifiedRange": "[6,1 -> 7,1]"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"originalFileName": "./1.tst",
|
||||
"modifiedFileName": "./2.tst",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[2,3)",
|
||||
"modifiedRange": "[2,3)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[2,11 -> 2,11]",
|
||||
"modifiedRange": "[2,11 -> 2,35]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[6,6)",
|
||||
"modifiedRange": "[6,7)",
|
||||
"innerChanges": null
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
x
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"originalFileName": "./1.txt",
|
||||
"modifiedFileName": "./2.txt",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[1,2)",
|
||||
"modifiedRange": "[1,2)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[1,1 -> 1,1]",
|
||||
"modifiedRange": "[1,1 -> 1,2]"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"originalFileName": "./1.txt",
|
||||
"modifiedFileName": "./2.txt",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[1,2)",
|
||||
"modifiedRange": "[1,2)",
|
||||
"innerChanges": null
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
interface Test {
|
||||
/**
|
||||
* Render +/- indicators for added/deleted changes.
|
||||
* Defaults to true.
|
||||
*/
|
||||
renderIndicators?: boolean;
|
||||
/**
|
||||
* Original model should be editable?
|
||||
* Defaults to false.
|
||||
*/
|
||||
originalEditable?: boolean;
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
interface Test {
|
||||
/**
|
||||
* Render +/- indicators for added/deleted changes.
|
||||
* Defaults to true.
|
||||
*/
|
||||
renderIndicators?: boolean;
|
||||
/**
|
||||
* Shows icons in the glyph margin to revert changes.
|
||||
* Default to true.
|
||||
*/
|
||||
renderMarginRevertIcon?: boolean;
|
||||
/**
|
||||
* Original model should be editable?
|
||||
* Defaults to false.
|
||||
*/
|
||||
originalEditable?: boolean;
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"originalFileName": "./1.tst",
|
||||
"modifiedFileName": "./2.tst",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[7,7)",
|
||||
"modifiedRange": "[7,12)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[7,1 -> 7,1]",
|
||||
"modifiedRange": "[7,1 -> 12,1]"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"originalFileName": "./1.tst",
|
||||
"modifiedFileName": "./2.tst",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[8,8)",
|
||||
"modifiedRange": "[8,13)",
|
||||
"innerChanges": null
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
class Test {
|
||||
// ---- BEGIN diff --------------------------------------------------------------------------
|
||||
|
||||
public async computeDiff(originalUrl: string, modifiedUrl: string, ignoreTrimWhitespace: boolean, maxComputationTime: number): Promise<IDiffComputationResult | null> {
|
||||
const original = this._getModel(originalUrl);
|
||||
const modified = this._getModel(modifiedUrl);
|
||||
if (!original || !modified) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return EditorSimpleWorker.computeDiff(original, modified, ignoreTrimWhitespace, maxComputationTime);
|
||||
}
|
||||
|
||||
public static computeDiff(originalTextModel: ICommonModel | ITextModel, modifiedTextModel: ICommonModel | ITextModel, ignoreTrimWhitespace: boolean, maxComputationTime: number): IDiffComputationResult | null {
|
||||
const originalLines = originalTextModel.getLinesContent();
|
||||
const modifiedLines = modifiedTextModel.getLinesContent();
|
||||
const diffComputer = new DiffComputer(originalLines, modifiedLines, {
|
||||
shouldComputeCharChanges: true,
|
||||
shouldPostProcessCharChanges: true,
|
||||
shouldIgnoreTrimWhitespace: ignoreTrimWhitespace,
|
||||
shouldMakePrettyDiff: true,
|
||||
maxComputationTime: maxComputationTime
|
||||
});
|
||||
|
||||
const diffResult = diffComputer.computeDiff();
|
||||
const identical = (diffResult.changes.length > 0 ? false : this._modelsAreIdentical(originalTextModel, modifiedTextModel));
|
||||
return {
|
||||
quitEarly: diffResult.quitEarly,
|
||||
identical: identical,
|
||||
changes: diffResult.changes
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
class Test {
|
||||
// ---- BEGIN diff --------------------------------------------------------------------------
|
||||
|
||||
public async computeDiff(originalUrl: string, modifiedUrl: string, options: ILinesDiffComputerOptions): Promise<IDiffComputationResult | null> {
|
||||
const original = this._getModel(originalUrl);
|
||||
const modified = this._getModel(modifiedUrl);
|
||||
if (!original || !modified) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return EditorSimpleWorker.computeDiff(original, modified, options);
|
||||
}
|
||||
|
||||
public static computeDiff(originalTextModel: ICommonModel | ITextModel, modifiedTextModel: ICommonModel | ITextModel, options: ILinesDiffComputerOptions): IDiffComputationResult {
|
||||
|
||||
const diffAlgorithm: ILinesDiffComputer = options.diffAlgorithm === 'experimental' ? linesDiffComputers.experimental : linesDiffComputers.smart;
|
||||
|
||||
const originalLines = originalTextModel.getLinesContent();
|
||||
const modifiedLines = modifiedTextModel.getLinesContent();
|
||||
|
||||
const result = diffAlgorithm.computeDiff(originalLines, modifiedLines, options);
|
||||
|
||||
const identical = (result.changes.length > 0 ? false : this._modelsAreIdentical(originalTextModel, modifiedTextModel));
|
||||
|
||||
return {
|
||||
identical,
|
||||
quitEarly: result.quitEarly,
|
||||
changes: result.changes.map(m => ([m.originalRange.startLineNumber, m.originalRange.endLineNumberExclusive, m.modifiedRange.startLineNumber, m.modifiedRange.endLineNumberExclusive, m.innerChanges?.map(m => [
|
||||
m.originalRange.startLineNumber,
|
||||
m.originalRange.startColumn,
|
||||
m.originalRange.endLineNumber,
|
||||
m.originalRange.endColumn,
|
||||
m.modifiedRange.startLineNumber,
|
||||
m.modifiedRange.startColumn,
|
||||
m.modifiedRange.endLineNumber,
|
||||
m.modifiedRange.endColumn,
|
||||
])]))
|
||||
};
|
||||
}
|
||||
}
|
||||
+508
@@ -0,0 +1,508 @@
|
||||
{
|
||||
"originalFileName": "./1.tst",
|
||||
"modifiedFileName": "./2.tst",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[2,3)",
|
||||
"modifiedRange": "[2,3)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[2,1 -> 2,5]",
|
||||
"modifiedRange": "[2,1 -> 2,2]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[4,5)",
|
||||
"modifiedRange": "[4,5)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[4,69 -> 4,69]",
|
||||
"modifiedRange": "[4,69 -> 4,72]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[4,70 -> 4,71]",
|
||||
"modifiedRange": "[4,73 -> 4,74]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[4,72 -> 4,84]",
|
||||
"modifiedRange": "[4,75 -> 4,75]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[4,85 -> 4,89]",
|
||||
"modifiedRange": "[4,76 -> 4,76]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[4,91 -> 4,95]",
|
||||
"modifiedRange": "[4,78 -> 4,82]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[4,96 -> 4,103]",
|
||||
"modifiedRange": "[4,83 -> 4,88]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[4,109 -> 4,110]",
|
||||
"modifiedRange": "[4,94 -> 4,98]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[4,114 -> 4,126]",
|
||||
"modifiedRange": "[4,102 -> 4,103]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[11,12)",
|
||||
"modifiedRange": "[11,12)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[11,61 -> 11,87]",
|
||||
"modifiedRange": "[11,61 -> 11,61]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[11,88 -> 11,89]",
|
||||
"modifiedRange": "[11,62 -> 11,62]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[11,90 -> 11,93]",
|
||||
"modifiedRange": "[11,63 -> 11,63]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[11,97 -> 11,101]",
|
||||
"modifiedRange": "[11,67 -> 11,68]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,15)",
|
||||
"modifiedRange": "[14,18)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[14,120 -> 14,120]",
|
||||
"modifiedRange": "[14,120 -> 14,123]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,121 -> 14,123]",
|
||||
"modifiedRange": "[14,124 -> 14,124]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,124 -> 14,125]",
|
||||
"modifiedRange": "[14,125 -> 14,133]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,126 -> 14,128]",
|
||||
"modifiedRange": "[14,134 -> 14,136]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,129 -> 14,129]",
|
||||
"modifiedRange": "[14,137 -> 14,141]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,130 -> 14,133]",
|
||||
"modifiedRange": "[14,142 -> 14,144]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,135 -> 14,136]",
|
||||
"modifiedRange": "[14,146 -> 14,148]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,137 -> 14,143]",
|
||||
"modifiedRange": "[14,149 -> 14,151]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,144 -> 14,148]",
|
||||
"modifiedRange": "[14,152 -> 14,152]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,149 -> 14,150]",
|
||||
"modifiedRange": "[14,153 -> 14,156]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,151 -> 14,154]",
|
||||
"modifiedRange": "[14,157 -> 14,162]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,165 -> 14,168]",
|
||||
"modifiedRange": "[14,173 -> 14,174]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,169 -> 14,170]",
|
||||
"modifiedRange": "[14,175 -> 14,179]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,171 -> 14,171]",
|
||||
"modifiedRange": "[14,180 -> 16,5]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,172 -> 14,176]",
|
||||
"modifiedRange": "[16,6 -> 16,17]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,177 -> 14,178]",
|
||||
"modifiedRange": "[16,18 -> 16,22]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,181 -> 14,181]",
|
||||
"modifiedRange": "[16,25 -> 16,30]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,191 -> 14,192]",
|
||||
"modifiedRange": "[16,40 -> 16,47]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,196 -> 14,198]",
|
||||
"modifiedRange": "[16,51 -> 16,51]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,199 -> 14,200]",
|
||||
"modifiedRange": "[16,52 -> 16,58]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,201 -> 14,201]",
|
||||
"modifiedRange": "[16,59 -> 16,63]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,202 -> 14,202]",
|
||||
"modifiedRange": "[16,64 -> 16,66]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,203 -> 14,204]",
|
||||
"modifiedRange": "[16,67 -> 16,70]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,205 -> 14,205]",
|
||||
"modifiedRange": "[16,71 -> 16,80]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,206 -> 14,207]",
|
||||
"modifiedRange": "[16,81 -> 16,83]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,209 -> 14,209]",
|
||||
"modifiedRange": "[16,85 -> 16,119]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,210 -> 14,211]",
|
||||
"modifiedRange": "[16,120 -> 17,1]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[17,24)",
|
||||
"modifiedRange": "[20,24)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[17,1 -> 17,1]",
|
||||
"modifiedRange": "[20,1 -> 21,1]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[17,8 -> 17,8]",
|
||||
"modifiedRange": "[21,8 -> 21,17]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[17,13 -> 17,14]",
|
||||
"modifiedRange": "[21,22 -> 21,33]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[17,20 -> 17,28]",
|
||||
"modifiedRange": "[21,39 -> 21,39]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[17,32 -> 17,40]",
|
||||
"modifiedRange": "[21,43 -> 21,43]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[17,71 -> 17,72]",
|
||||
"modifiedRange": "[21,74 -> 22,1]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[18,3 -> 18,4]",
|
||||
"modifiedRange": "[23,3 -> 23,6]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[18,5 -> 18,9]",
|
||||
"modifiedRange": "[23,7 -> 23,10]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[18,10 -> 18,15]",
|
||||
"modifiedRange": "[23,11 -> 23,13]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[18,16 -> 18,19]",
|
||||
"modifiedRange": "[23,14 -> 23,16]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[18,20 -> 18,29]",
|
||||
"modifiedRange": "[23,17 -> 23,20]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[18,30 -> 18,31]",
|
||||
"modifiedRange": "[23,21 -> 23,22]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[18,32 -> 18,33]",
|
||||
"modifiedRange": "[23,23 -> 23,23]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[18,34 -> 19,4]",
|
||||
"modifiedRange": "[23,24 -> 23,24]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[19,5 -> 19,7]",
|
||||
"modifiedRange": "[23,25 -> 23,25]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[19,10 -> 19,14]",
|
||||
"modifiedRange": "[23,28 -> 23,28]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[19,14 -> 19,17]",
|
||||
"modifiedRange": "[23,28 -> 23,29]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[19,18 -> 19,26]",
|
||||
"modifiedRange": "[23,30 -> 23,30]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[19,32 -> 19,32]",
|
||||
"modifiedRange": "[23,36 -> 23,56]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[19,35 -> 20,4]",
|
||||
"modifiedRange": "[23,59 -> 23,61]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[20,5 -> 20,6]",
|
||||
"modifiedRange": "[23,62 -> 23,65]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[20,7 -> 20,9]",
|
||||
"modifiedRange": "[23,66 -> 23,66]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[20,10 -> 20,15]",
|
||||
"modifiedRange": "[23,67 -> 23,67]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[20,16 -> 20,17]",
|
||||
"modifiedRange": "[23,68 -> 23,71]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[20,18 -> 20,24]",
|
||||
"modifiedRange": "[23,72 -> 23,72]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[20,25 -> 20,29]",
|
||||
"modifiedRange": "[23,73 -> 23,75]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[20,30 -> 20,32]",
|
||||
"modifiedRange": "[23,76 -> 23,78]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[20,33 -> 20,35]",
|
||||
"modifiedRange": "[23,79 -> 23,83]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[20,36 -> 20,39]",
|
||||
"modifiedRange": "[23,84 -> 23,84]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[20,41 -> 20,44]",
|
||||
"modifiedRange": "[23,86 -> 23,87]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[20,45 -> 20,49]",
|
||||
"modifiedRange": "[23,88 -> 23,89]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[20,50 -> 20,51]",
|
||||
"modifiedRange": "[23,90 -> 23,92]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[20,52 -> 21,6]",
|
||||
"modifiedRange": "[23,93 -> 23,96]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[21,7 -> 21,9]",
|
||||
"modifiedRange": "[23,97 -> 23,97]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[21,10 -> 21,13]",
|
||||
"modifiedRange": "[23,98 -> 23,98]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[21,14 -> 21,25]",
|
||||
"modifiedRange": "[23,99 -> 23,101]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[21,26 -> 22,4]",
|
||||
"modifiedRange": "[23,102 -> 23,102]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[22,5 -> 22,8]",
|
||||
"modifiedRange": "[23,103 -> 23,103]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[22,9 -> 22,15]",
|
||||
"modifiedRange": "[23,104 -> 23,107]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[22,16 -> 22,18]",
|
||||
"modifiedRange": "[23,108 -> 23,110]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[22,19 -> 22,21]",
|
||||
"modifiedRange": "[23,111 -> 23,111]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[22,22 -> 22,26]",
|
||||
"modifiedRange": "[23,112 -> 23,112]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[22,27 -> 22,32]",
|
||||
"modifiedRange": "[23,113 -> 23,113]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[22,33 -> 22,36]",
|
||||
"modifiedRange": "[23,114 -> 23,115]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[22,37 -> 22,41]",
|
||||
"modifiedRange": "[23,116 -> 23,117]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[22,42 -> 23,4]",
|
||||
"modifiedRange": "[23,118 -> 23,120]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[25,27)",
|
||||
"modifiedRange": "[25,25)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[25,1 -> 27,1]",
|
||||
"modifiedRange": "[25,1 -> 25,1]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[28,31)",
|
||||
"modifiedRange": "[26,38)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[28,4 -> 28,4]",
|
||||
"modifiedRange": "[26,4 -> 27,4]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[28,15 -> 28,20]",
|
||||
"modifiedRange": "[27,15 -> 27,16]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[29,4 -> 29,7]",
|
||||
"modifiedRange": "[28,4 -> 28,7]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[29,8 -> 29,8]",
|
||||
"modifiedRange": "[28,8 -> 28,18]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[29,9 -> 29,10]",
|
||||
"modifiedRange": "[28,19 -> 28,20]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[29,11 -> 29,11]",
|
||||
"modifiedRange": "[28,21 -> 28,47]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[29,13 -> 29,14]",
|
||||
"modifiedRange": "[28,49 -> 28,71]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[29,15 -> 29,15]",
|
||||
"modifiedRange": "[28,72 -> 28,76]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[29,16 -> 29,16]",
|
||||
"modifiedRange": "[28,77 -> 28,90]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[29,17 -> 29,17]",
|
||||
"modifiedRange": "[28,91 -> 28,94]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[29,18 -> 29,18]",
|
||||
"modifiedRange": "[28,95 -> 28,124]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[29,19 -> 29,19]",
|
||||
"modifiedRange": "[28,125 -> 28,129]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[29,20 -> 29,20]",
|
||||
"modifiedRange": "[28,130 -> 28,134]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[29,21 -> 29,21]",
|
||||
"modifiedRange": "[28,135 -> 28,176]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[29,22 -> 29,22]",
|
||||
"modifiedRange": "[28,177 -> 29,13]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[29,24 -> 29,24]",
|
||||
"modifiedRange": "[29,15 -> 29,36]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[30,4 -> 30,6]",
|
||||
"modifiedRange": "[30,4 -> 30,16]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[30,10 -> 30,10]",
|
||||
"modifiedRange": "[30,20 -> 30,21]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[30,11 -> 30,13]",
|
||||
"modifiedRange": "[30,22 -> 31,23]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[30,14 -> 30,14]",
|
||||
"modifiedRange": "[31,24 -> 33,10]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[30,16 -> 30,17]",
|
||||
"modifiedRange": "[33,12 -> 33,15]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[30,18 -> 30,18]",
|
||||
"modifiedRange": "[33,16 -> 33,19]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[30,19 -> 30,19]",
|
||||
"modifiedRange": "[33,20 -> 33,21]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[30,20 -> 30,22]",
|
||||
"modifiedRange": "[33,22 -> 33,22]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[30,23 -> 30,23]",
|
||||
"modifiedRange": "[33,23 -> 34,6]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[30,24 -> 30,26]",
|
||||
"modifiedRange": "[34,7 -> 34,16]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[30,30 -> 30,30]",
|
||||
"modifiedRange": "[34,20 -> 34,21]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[30,31 -> 30,31]",
|
||||
"modifiedRange": "[34,22 -> 37,9]"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,155 @@
|
||||
{
|
||||
"originalFileName": "./1.tst",
|
||||
"modifiedFileName": "./2.tst",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[2,3)",
|
||||
"modifiedRange": "[2,3)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[2,1 -> 2,5]",
|
||||
"modifiedRange": "[2,1 -> 2,2]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[4,5)",
|
||||
"modifiedRange": "[4,5)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[4,69 -> 4,103]",
|
||||
"modifiedRange": "[4,69 -> 4,88]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[4,109 -> 4,110]",
|
||||
"modifiedRange": "[4,94 -> 4,98]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[4,114 -> 4,126]",
|
||||
"modifiedRange": "[4,102 -> 4,103]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[11,12)",
|
||||
"modifiedRange": "[11,12)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[11,61 -> 11,93]",
|
||||
"modifiedRange": "[11,61 -> 11,63]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[11,97 -> 11,101]",
|
||||
"modifiedRange": "[11,67 -> 11,68]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,15)",
|
||||
"modifiedRange": "[14,18)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[14,120 -> 14,154]",
|
||||
"modifiedRange": "[14,120 -> 14,162]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,165 -> 14,178]",
|
||||
"modifiedRange": "[14,173 -> 16,22]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,181 -> 14,181]",
|
||||
"modifiedRange": "[16,25 -> 16,30]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,191 -> 14,192]",
|
||||
"modifiedRange": "[16,40 -> 16,47]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,196 -> 14,211]",
|
||||
"modifiedRange": "[16,51 -> 17,1]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[17,24)",
|
||||
"modifiedRange": "[20,24)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[17,1 -> 17,1]",
|
||||
"modifiedRange": "[20,1 -> 21,1]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[17,9 -> 17,21]",
|
||||
"modifiedRange": "[21,9 -> 21,15]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[17,24 -> 17,29]",
|
||||
"modifiedRange": "[21,18 -> 21,19]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[17,32 -> 17,33]",
|
||||
"modifiedRange": "[21,22 -> 21,33]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[17,39 -> 17,40]",
|
||||
"modifiedRange": "[21,39 -> 21,43]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[17,71 -> 17,72]",
|
||||
"modifiedRange": "[21,74 -> 22,1]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[18,3 -> 19,26]",
|
||||
"modifiedRange": "[23,3 -> 23,30]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[19,32 -> 19,32]",
|
||||
"modifiedRange": "[23,36 -> 23,56]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[19,35 -> 23,4]",
|
||||
"modifiedRange": "[23,59 -> 23,120]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[25,27)",
|
||||
"modifiedRange": "[25,25)",
|
||||
"innerChanges": null
|
||||
},
|
||||
{
|
||||
"originalRange": "[28,31)",
|
||||
"modifiedRange": "[26,38)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[28,1 -> 28,1]",
|
||||
"modifiedRange": "[26,1 -> 27,1]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[28,15 -> 28,20]",
|
||||
"modifiedRange": "[27,15 -> 27,16]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[29,4 -> 29,24]",
|
||||
"modifiedRange": "[28,4 -> 32,30]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[30,4 -> 30,6]",
|
||||
"modifiedRange": "[33,4 -> 33,16]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[30,10 -> 30,13]",
|
||||
"modifiedRange": "[33,20 -> 34,9]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[30,16 -> 30,26]",
|
||||
"modifiedRange": "[34,12 -> 36,16]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[30,30 -> 30,31]",
|
||||
"modifiedRange": "[36,20 -> 37,9]"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { URI } from 'vs/base/common/uri';
|
||||
import { IRange } from 'vs/editor/common/core/range';
|
||||
import { IEditorWorkerService, IUnicodeHighlightsResult } from 'vs/editor/common/services/editorWorker';
|
||||
import { TextEdit, IInplaceReplaceSupportResult } from 'vs/editor/common/languages';
|
||||
import { IChange, IDiffComputationResult } from 'vs/editor/common/diff/diffComputer';
|
||||
|
||||
export class TestEditorWorkerService implements IEditorWorkerService {
|
||||
|
||||
declare readonly _serviceBrand: undefined;
|
||||
|
||||
canComputeUnicodeHighlights(uri: URI): boolean { return false; }
|
||||
async computedUnicodeHighlights(uri: URI): Promise<IUnicodeHighlightsResult> { return { ranges: [], hasMore: false, ambiguousCharacterCount: 0, invisibleCharacterCount: 0, nonBasicAsciiCharacterCount: 0 }; }
|
||||
async computeDiff(original: URI, modified: URI, ignoreTrimWhitespace: boolean, maxComputationTime: number): Promise<IDiffComputationResult | null> { return null; }
|
||||
canComputeDirtyDiff(original: URI, modified: URI): boolean { return false; }
|
||||
async computeDirtyDiff(original: URI, modified: URI, ignoreTrimWhitespace: boolean): Promise<IChange[] | null> { return null; }
|
||||
async computeMoreMinimalEdits(resource: URI, edits: TextEdit[] | null | undefined): Promise<TextEdit[] | undefined> { return undefined; }
|
||||
canComputeWordRanges(resource: URI): boolean { return false; }
|
||||
async computeWordRanges(resource: URI, range: IRange): Promise<{ [word: string]: IRange[] } | null> { return null; }
|
||||
canNavigateValueSet(resource: URI): boolean { return false; }
|
||||
async navigateValueSet(resource: URI, range: IRange, up: boolean): Promise<IInplaceReplaceSupportResult | null> { return null; }
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { URI } from 'vs/base/common/uri';
|
||||
import { IRange } from 'vs/editor/common/core/range';
|
||||
import { IDiffComputationResult, IEditorWorkerService, IUnicodeHighlightsResult } from 'vs/editor/common/services/editorWorker';
|
||||
import { TextEdit, IInplaceReplaceSupportResult } from 'vs/editor/common/languages';
|
||||
import { IDocumentDiffProviderOptions } from 'vs/editor/common/diff/documentDiffProvider';
|
||||
import { IChange } from 'vs/editor/common/diff/smartLinesDiffComputer';
|
||||
|
||||
export class TestEditorWorkerService implements IEditorWorkerService {
|
||||
|
||||
declare readonly _serviceBrand: undefined;
|
||||
|
||||
canComputeUnicodeHighlights(uri: URI): boolean { return false; }
|
||||
async computedUnicodeHighlights(uri: URI): Promise<IUnicodeHighlightsResult> { return { ranges: [], hasMore: false, ambiguousCharacterCount: 0, invisibleCharacterCount: 0, nonBasicAsciiCharacterCount: 0 }; }
|
||||
async computeDiff(original: URI, modified: URI, options: IDocumentDiffProviderOptions): Promise<IDiffComputationResult | null> { return null; }
|
||||
canComputeDirtyDiff(original: URI, modified: URI): boolean { return false; }
|
||||
async computeDirtyDiff(original: URI, modified: URI, ignoreTrimWhitespace: boolean): Promise<IChange[] | null> { return null; }
|
||||
async computeMoreMinimalEdits(resource: URI, edits: TextEdit[] | null | undefined): Promise<TextEdit[] | undefined> { return undefined; }
|
||||
canComputeWordRanges(resource: URI): boolean { return false; }
|
||||
async computeWordRanges(resource: URI, range: IRange): Promise<{ [word: string]: IRange[] } | null> { return null; }
|
||||
canNavigateValueSet(resource: URI): boolean { return false; }
|
||||
async navigateValueSet(resource: URI, range: IRange, up: boolean): Promise<IInplaceReplaceSupportResult | null> { return null; }
|
||||
}
|
||||
+112
@@ -0,0 +1,112 @@
|
||||
{
|
||||
"originalFileName": "./1.tst",
|
||||
"modifiedFileName": "./2.tst",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[8,9)",
|
||||
"modifiedRange": "[8,9)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[8,9 -> 8,9]",
|
||||
"modifiedRange": "[8,9 -> 8,33]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[10,11)",
|
||||
"modifiedRange": "[10,12)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[10,11 -> 10,14]",
|
||||
"modifiedRange": "[10,11 -> 10,17]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[10,15 -> 10,20]",
|
||||
"modifiedRange": "[10,18 -> 10,19]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[10,24 -> 10,25]",
|
||||
"modifiedRange": "[10,23 -> 10,25]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[10,26 -> 10,27]",
|
||||
"modifiedRange": "[10,26 -> 10,32]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[10,28 -> 10,31]",
|
||||
"modifiedRange": "[10,33 -> 10,33]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[10,35 -> 10,36]",
|
||||
"modifiedRange": "[10,37 -> 10,50]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[10,37 -> 10,38]",
|
||||
"modifiedRange": "[10,51 -> 10,72]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[10,39 -> 10,40]",
|
||||
"modifiedRange": "[10,73 -> 11,6]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[10,42 -> 10,42]",
|
||||
"modifiedRange": "[11,8 -> 11,18]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[10,72 -> 10,73]",
|
||||
"modifiedRange": "[11,48 -> 11,59]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[18,19)",
|
||||
"modifiedRange": "[19,20)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[18,50 -> 18,50]",
|
||||
"modifiedRange": "[19,50 -> 19,53]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[18,51 -> 18,52]",
|
||||
"modifiedRange": "[19,54 -> 19,55]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[18,53 -> 18,65]",
|
||||
"modifiedRange": "[19,56 -> 19,56]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[18,66 -> 18,70]",
|
||||
"modifiedRange": "[19,57 -> 19,57]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[18,72 -> 18,73]",
|
||||
"modifiedRange": "[19,59 -> 19,61]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[18,74 -> 18,76]",
|
||||
"modifiedRange": "[19,62 -> 19,65]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[18,77 -> 18,78]",
|
||||
"modifiedRange": "[19,66 -> 19,66]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[18,79 -> 18,85]",
|
||||
"modifiedRange": "[19,67 -> 19,74]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[18,86 -> 18,87]",
|
||||
"modifiedRange": "[19,75 -> 19,81]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[18,88 -> 18,91]",
|
||||
"modifiedRange": "[19,82 -> 19,82]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[18,95 -> 18,107]",
|
||||
"modifiedRange": "[19,86 -> 19,87]"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"originalFileName": "./1.tst",
|
||||
"modifiedFileName": "./2.tst",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[8,9)",
|
||||
"modifiedRange": "[8,9)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[8,11 -> 8,11]",
|
||||
"modifiedRange": "[8,11 -> 8,35]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[10,11)",
|
||||
"modifiedRange": "[10,12)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[10,11 -> 10,20]",
|
||||
"modifiedRange": "[10,11 -> 10,77]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[10,24 -> 10,41]",
|
||||
"modifiedRange": "[10,81 -> 11,17]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[10,72 -> 10,73]",
|
||||
"modifiedRange": "[11,48 -> 11,59]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[18,19)",
|
||||
"modifiedRange": "[19,20)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[18,50 -> 18,91]",
|
||||
"modifiedRange": "[19,50 -> 19,82]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[18,95 -> 18,107]",
|
||||
"modifiedRange": "[19,86 -> 19,87]"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
import { findLast } from 'vs/base/common/arrays';
|
||||
import { Disposable } from 'vs/base/common/lifecycle';
|
||||
import { ITransaction, observableValue, transaction } from 'vs/base/common/observable';
|
||||
import { Range } from 'vs/editor/common/core/range';
|
||||
import { ScrollType } from 'vs/editor/common/editorCommon';
|
||||
import { IFooBar, IFoo } from 'foo';
|
||||
|
||||
console.log(observableValue);
|
||||
|
||||
console.log(observableValue);
|
||||
@@ -0,0 +1,10 @@
|
||||
import { findLast } from 'vs/base/common/arrays';
|
||||
import { Disposable } from 'vs/base/common/lifecycle';
|
||||
import { ITransaction, observableFromEvent, observableValue, transaction } from 'vs/base/common/observable';
|
||||
import { Range } from 'vs/editor/common/core/range';
|
||||
import { ScrollType } from 'vs/editor/common/editorCommon';
|
||||
import { IFooBar, IBar, IFoo } from 'foo';
|
||||
|
||||
console.log(observableFromEvent, observableValue);
|
||||
|
||||
console.log(observableValue, observableFromEvent);
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"originalFileName": "./1.tst",
|
||||
"modifiedFileName": "./2.tst",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[3,4)",
|
||||
"modifiedRange": "[3,4)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[3,23 -> 3,23]",
|
||||
"modifiedRange": "[3,23 -> 3,44]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[6,7)",
|
||||
"modifiedRange": "[6,7)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[6,18 -> 6,18]",
|
||||
"modifiedRange": "[6,18 -> 6,24]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[8,9)",
|
||||
"modifiedRange": "[8,9)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[8,13 -> 8,13]",
|
||||
"modifiedRange": "[8,13 -> 8,34]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[10,11)",
|
||||
"modifiedRange": "[10,11)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[10,28 -> 10,28]",
|
||||
"modifiedRange": "[10,28 -> 10,49]"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"originalFileName": "./1.tst",
|
||||
"modifiedFileName": "./2.tst",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[3,4)",
|
||||
"modifiedRange": "[3,4)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[3,34 -> 3,34]",
|
||||
"modifiedRange": "[3,34 -> 3,55]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[6,7)",
|
||||
"modifiedRange": "[6,7)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[6,20 -> 6,20]",
|
||||
"modifiedRange": "[6,20 -> 6,26]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[8,9)",
|
||||
"modifiedRange": "[8,9)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[8,23 -> 8,23]",
|
||||
"modifiedRange": "[8,23 -> 8,44]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[10,11)",
|
||||
"modifiedRange": "[10,11)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[10,28 -> 10,28]",
|
||||
"modifiedRange": "[10,28 -> 10,49]"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
export class EditorWorkerServiceDiffComputer implements IDiffComputer {
|
||||
constructor(@IEditorWorkerService private readonly editorWorkerService: IEditorWorkerService) { }
|
||||
|
||||
async computeDiff(textModel1: ITextModel, textModel2: ITextModel): Promise<LineDiff[] | null> {
|
||||
const diffs = await this.editorWorkerService.computeDiff(textModel1.uri, textModel2.uri, false, 1000);
|
||||
if (!diffs || diffs.quitEarly) {
|
||||
return null;
|
||||
}
|
||||
return diffs.changes.map((c) => LineDiff.fromLineChange(c, textModel1, textModel2));
|
||||
}
|
||||
}
|
||||
|
||||
function wait(ms: number): Promise<void> {
|
||||
return new Promise(r => setTimeout(r, ms));
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
export class EditorWorkerServiceDiffComputer implements IDiffComputer {
|
||||
constructor(@IEditorWorkerService private readonly editorWorkerService: IEditorWorkerService) { }
|
||||
|
||||
async computeDiff(textModel1: ITextModel, textModel2: ITextModel): Promise<LineDiff[] | null> {
|
||||
const diffs = await this.editorWorkerService.computeDiff(textModel1.uri, textModel2.uri, false, 1000);
|
||||
if (!diffs || diffs.quitEarly) {
|
||||
return null;
|
||||
}
|
||||
return EditorWorkerServiceDiffComputer.fromDiffComputationResult(diffs, textModel1, textModel2);
|
||||
}
|
||||
|
||||
public static fromDiffComputationResult(result: IDiffComputationResult, textModel1: ITextModel, textModel2: ITextModel): LineDiff[] {
|
||||
return result.changes.map((c) => fromLineChange(c, textModel1, textModel2));
|
||||
}
|
||||
}
|
||||
|
||||
function fromLineChange(lineChange: ILineChange, originalTextModel: ITextModel, modifiedTextModel: ITextModel): LineDiff {
|
||||
let originalRange: LineRange;
|
||||
if (lineChange.originalEndLineNumber === 0) {
|
||||
// Insertion
|
||||
originalRange = new LineRange(lineChange.originalStartLineNumber + 1, 0);
|
||||
} else {
|
||||
originalRange = new LineRange(lineChange.originalStartLineNumber, lineChange.originalEndLineNumber - lineChange.originalStartLineNumber + 1);
|
||||
}
|
||||
|
||||
let modifiedRange: LineRange;
|
||||
if (lineChange.modifiedEndLineNumber === 0) {
|
||||
// Deletion
|
||||
modifiedRange = new LineRange(lineChange.modifiedStartLineNumber + 1, 0);
|
||||
} else {
|
||||
modifiedRange = new LineRange(lineChange.modifiedStartLineNumber, lineChange.modifiedEndLineNumber - lineChange.modifiedStartLineNumber + 1);
|
||||
}
|
||||
|
||||
let innerDiffs = lineChange.charChanges?.map(c => fromCharChange(c));
|
||||
if (!innerDiffs) {
|
||||
innerDiffs = [diffFromLineRanges(originalRange, modifiedRange)];
|
||||
}
|
||||
|
||||
return new LineDiff(
|
||||
originalTextModel,
|
||||
originalRange,
|
||||
modifiedTextModel,
|
||||
modifiedRange,
|
||||
innerDiffs
|
||||
);
|
||||
}
|
||||
|
||||
function diffFromLineRanges(originalRange: LineRange, modifiedRange: LineRange): Diff {
|
||||
// [1,1) -> [100, 101)
|
||||
|
||||
if (originalRange.startLineNumber !== 1 && modifiedRange.startLineNumber !== 1) {
|
||||
|
||||
}
|
||||
|
||||
let original = new Range(
|
||||
originalRange.startLineNumber - 1,
|
||||
Number.MAX_SAFE_INTEGER,
|
||||
originalRange.endLineNumberExclusive - 1,
|
||||
Number.MAX_SAFE_INTEGER,
|
||||
);
|
||||
|
||||
let modified = new Range(
|
||||
modifiedRange.startLineNumber - 1,
|
||||
Number.MAX_SAFE_INTEGER,
|
||||
modifiedRange.endLineNumberExclusive - 1,
|
||||
Number.MAX_SAFE_INTEGER,
|
||||
);
|
||||
|
||||
return new Diff(
|
||||
original,
|
||||
modified
|
||||
);
|
||||
}
|
||||
|
||||
function fromCharChange(charChange: ICharChange): Diff {
|
||||
return new Diff(
|
||||
new Range(charChange.originalStartLineNumber, charChange.originalStartColumn, charChange.originalEndLineNumber, charChange.originalEndColumn),
|
||||
new Range(charChange.modifiedStartLineNumber, charChange.modifiedStartColumn, charChange.modifiedEndLineNumber, charChange.modifiedEndColumn)
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,226 @@
|
||||
{
|
||||
"originalFileName": "./1.tst",
|
||||
"modifiedFileName": "./2.tst",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[9,10)",
|
||||
"modifiedRange": "[9,14)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[9,10 -> 9,10]",
|
||||
"modifiedRange": "[9,10 -> 9,68]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[9,15 -> 9,15]",
|
||||
"modifiedRange": "[9,73 -> 13,16]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[9,35 -> 9,44]",
|
||||
"modifiedRange": "[13,36 -> 13,36]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[13,15)",
|
||||
"modifiedRange": "[17,80)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[13,10 -> 13,11]",
|
||||
"modifiedRange": "[17,10 -> 17,20]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[13,12 -> 13,12]",
|
||||
"modifiedRange": "[17,21 -> 17,26]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[13,13 -> 13,13]",
|
||||
"modifiedRange": "[17,27 -> 17,61]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[13,14 -> 13,14]",
|
||||
"modifiedRange": "[17,62 -> 19,5]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[13,15 -> 13,15]",
|
||||
"modifiedRange": "[19,6 -> 19,34]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[13,18 -> 13,18]",
|
||||
"modifiedRange": "[19,37 -> 20,10]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[13,17 -> 13,18]",
|
||||
"modifiedRange": "[20,9 -> 21,18]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[13,20 -> 13,20]",
|
||||
"modifiedRange": "[21,20 -> 21,62]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[13,25 -> 13,25]",
|
||||
"modifiedRange": "[21,67 -> 21,74]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[13,26 -> 13,26]",
|
||||
"modifiedRange": "[21,75 -> 26,19]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[13,28 -> 13,29]",
|
||||
"modifiedRange": "[26,21 -> 27,37]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[13,30 -> 13,30]",
|
||||
"modifiedRange": "[27,38 -> 28,12]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[13,31 -> 13,31]",
|
||||
"modifiedRange": "[28,13 -> 29,3]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[13,32 -> 13,32]",
|
||||
"modifiedRange": "[29,4 -> 29,6]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[13,33 -> 13,33]",
|
||||
"modifiedRange": "[29,7 -> 30,6]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[13,35 -> 13,37]",
|
||||
"modifiedRange": "[30,8 -> 31,4]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[13,38 -> 13,38]",
|
||||
"modifiedRange": "[31,5 -> 31,6]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[13,39 -> 13,39]",
|
||||
"modifiedRange": "[31,7 -> 31,10]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[13,40 -> 13,40]",
|
||||
"modifiedRange": "[31,11 -> 34,50]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[13,41 -> 13,41]",
|
||||
"modifiedRange": "[34,51 -> 35,18]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,2 -> 14,2]",
|
||||
"modifiedRange": "[36,2 -> 36,7]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,3 -> 14,3]",
|
||||
"modifiedRange": "[36,8 -> 39,3]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,13 -> 14,14]",
|
||||
"modifiedRange": "[39,13 -> 40,4]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,15 -> 14,15]",
|
||||
"modifiedRange": "[40,5 -> 40,16]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,16 -> 14,16]",
|
||||
"modifiedRange": "[40,17 -> 42,3]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,17 -> 14,17]",
|
||||
"modifiedRange": "[42,4 -> 42,6]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,18 -> 14,18]",
|
||||
"modifiedRange": "[42,7 -> 44,12]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,19 -> 14,19]",
|
||||
"modifiedRange": "[44,13 -> 48,21]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,20 -> 14,20]",
|
||||
"modifiedRange": "[48,22 -> 48,28]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,21 -> 14,21]",
|
||||
"modifiedRange": "[48,29 -> 48,30]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,22 -> 14,22]",
|
||||
"modifiedRange": "[48,31 -> 48,43]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,23 -> 14,24]",
|
||||
"modifiedRange": "[48,44 -> 49,12]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,26 -> 14,26]",
|
||||
"modifiedRange": "[49,14 -> 51,20]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,27 -> 14,27]",
|
||||
"modifiedRange": "[51,21 -> 51,28]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,28 -> 14,28]",
|
||||
"modifiedRange": "[51,29 -> 51,60]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,29 -> 14,29]",
|
||||
"modifiedRange": "[51,61 -> 57,21]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,30 -> 14,30]",
|
||||
"modifiedRange": "[57,22 -> 58,5]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,31 -> 14,31]",
|
||||
"modifiedRange": "[58,6 -> 58,26]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,32 -> 14,32]",
|
||||
"modifiedRange": "[58,27 -> 58,28]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,33 -> 14,33]",
|
||||
"modifiedRange": "[58,29 -> 62,7]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,34 -> 14,34]",
|
||||
"modifiedRange": "[62,8 -> 63,27]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,35 -> 14,35]",
|
||||
"modifiedRange": "[63,28 -> 69,4]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,36 -> 14,36]",
|
||||
"modifiedRange": "[69,5 -> 69,17]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,37 -> 14,37]",
|
||||
"modifiedRange": "[69,18 -> 70,4]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,38 -> 14,38]",
|
||||
"modifiedRange": "[70,5 -> 70,11]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,39 -> 14,39]",
|
||||
"modifiedRange": "[70,12 -> 75,9]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,40 -> 14,40]",
|
||||
"modifiedRange": "[75,10 -> 75,13]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,41 -> 14,42]",
|
||||
"modifiedRange": "[75,14 -> 75,48]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,43 -> 14,43]",
|
||||
"modifiedRange": "[75,49 -> 79,2]"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"originalFileName": "./1.tst",
|
||||
"modifiedFileName": "./2.tst",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[9,10)",
|
||||
"modifiedRange": "[9,53)",
|
||||
"innerChanges": null
|
||||
},
|
||||
{
|
||||
"originalRange": "[11,11)",
|
||||
"modifiedRange": "[54,73)",
|
||||
"innerChanges": null
|
||||
},
|
||||
{
|
||||
"originalRange": "[13,15)",
|
||||
"modifiedRange": "[75,80)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[13,10 -> 13,20]",
|
||||
"modifiedRange": "[75,10 -> 77,42]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[13,25 -> 14,9]",
|
||||
"modifiedRange": "[77,47 -> 78,3]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,13 -> 14,37]",
|
||||
"modifiedRange": "[78,7 -> 78,112]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[14,40 -> 14,43]",
|
||||
"modifiedRange": "[78,115 -> 79,2]"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
function cloneTypeReference(source: TypeReference): TypeReference {
|
||||
const type = <TypeReference>createType(source.flags);
|
||||
type.symbol = source.symbol;
|
||||
type.objectFlags = source.objectFlags;
|
||||
type.target = source.target;
|
||||
type.typeArguments = source.typeArguments;
|
||||
return type;
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
function cloneTypeReference(source: TypeReference): TypeReference {
|
||||
const type = <TypeReference>createType(source.flags);
|
||||
type.symbol = source.symbol;
|
||||
type.objectFlags = source.objectFlags;
|
||||
type.target = source.target;
|
||||
type.resolvedTypeArguments = source.resolvedTypeArguments;
|
||||
return type;
|
||||
}
|
||||
|
||||
function createDeferredTypeReference(): DeferredTypeReference {
|
||||
const aliasSymbol = getAliasSymbolForTypeNode(node);
|
||||
const aliasTypeArguments = getTypeArgumentsForAliasSymbol(aliasSymbol);
|
||||
type.target = target;
|
||||
type.node = node;
|
||||
type.mapper = mapper;
|
||||
type.aliasSymbol = aliasSymbol;
|
||||
return type;
|
||||
}
|
||||
|
||||
function getTypeArguments(type: TypeReference): ReadonlyArray<Type> {
|
||||
if (!type.resolvedTypeArguments) {
|
||||
const node = type.node;
|
||||
}
|
||||
return type.resolvedTypeArguments;
|
||||
}
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"originalFileName": "./1.tst",
|
||||
"modifiedFileName": "./2.tst",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[6,7)",
|
||||
"modifiedRange": "[6,17)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[6,10 -> 6,11]",
|
||||
"modifiedRange": "[6,10 -> 6,19]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[6,33 -> 6,33]",
|
||||
"modifiedRange": "[6,41 -> 7,12]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[6,37 -> 6,37]",
|
||||
"modifiedRange": "[7,16 -> 12,39]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[6,46 -> 6,46]",
|
||||
"modifiedRange": "[12,48 -> 16,35]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[9,9)",
|
||||
"modifiedRange": "[19,26)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[9,1 -> 9,1]",
|
||||
"modifiedRange": "[19,1 -> 26,1]"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"originalFileName": "./1.tst",
|
||||
"modifiedFileName": "./2.tst",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[6,7)",
|
||||
"modifiedRange": "[6,17)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[6,10 -> 6,11]",
|
||||
"modifiedRange": "[6,10 -> 6,19]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[6,33 -> 6,33]",
|
||||
"modifiedRange": "[6,41 -> 7,12]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[6,37 -> 6,37]",
|
||||
"modifiedRange": "[7,16 -> 12,20]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[6,46 -> 6,46]",
|
||||
"modifiedRange": "[12,29 -> 16,35]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[9,9)",
|
||||
"modifiedRange": "[19,26)",
|
||||
"innerChanges": null
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
function compileProgram(): ExitStatus {
|
||||
// First get any syntactic errors.
|
||||
var diagnostics = program.getSyntacticDiagnostics();
|
||||
reportDiagnostics(diagnostics);
|
||||
|
||||
// If we didn't have any syntactic errors, then also try getting the global and
|
||||
// semantic errors.
|
||||
if (diagnostics.length === 0)
|
||||
@@ -0,0 +1,9 @@
|
||||
function compileProgram(): ExitStatus {
|
||||
let diagnostics: Diagnostic[];
|
||||
|
||||
// First get and report any syntactic errors.
|
||||
diagnostics = program.getSyntacticDiagnostics();
|
||||
|
||||
// If we didn't have any syntactic errors, then also try getting the global and
|
||||
// semantic errors.
|
||||
if (diagnostics.length === 0) {
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"originalFileName": "./1.tst",
|
||||
"modifiedFileName": "./2.tst",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[2,5)",
|
||||
"modifiedRange": "[2,6)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[2,1 -> 2,1]",
|
||||
"modifiedRange": "[2,1 -> 4,1]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[2,17 -> 2,17]",
|
||||
"modifiedRange": "[4,17 -> 4,28]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[2,39 -> 2,40]",
|
||||
"modifiedRange": "[4,50 -> 4,50]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[3,5 -> 3,9]",
|
||||
"modifiedRange": "[5,5 -> 5,5]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[3,57 -> 4,36]",
|
||||
"modifiedRange": "[5,53 -> 5,53]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[8,9)",
|
||||
"modifiedRange": "[9,10)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[8,35 -> 8,35]",
|
||||
"modifiedRange": "[9,35 -> 9,36]"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"originalFileName": "./1.tst",
|
||||
"modifiedFileName": "./2.tst",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[2,5)",
|
||||
"modifiedRange": "[2,6)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[2,1 -> 2,1]",
|
||||
"modifiedRange": "[2,1 -> 4,1]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[2,20 -> 2,20]",
|
||||
"modifiedRange": "[4,20 -> 4,31]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[2,39 -> 2,40]",
|
||||
"modifiedRange": "[4,50 -> 4,50]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[3,5 -> 3,9]",
|
||||
"modifiedRange": "[5,5 -> 5,5]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[3,57 -> 4,36]",
|
||||
"modifiedRange": "[5,53 -> 5,53]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[8,9)",
|
||||
"modifiedRange": "[9,10)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[8,35 -> 8,35]",
|
||||
"modifiedRange": "[9,35 -> 9,36]"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,138 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { IHistoryNavigationWidget } from 'vs/base/browser/history';
|
||||
import { IContextViewProvider } from 'vs/base/browser/ui/contextview/contextview';
|
||||
import { FindInput, IFindInputOptions } from 'vs/base/browser/ui/findinput/findInput';
|
||||
import { IReplaceInputOptions, ReplaceInput } from 'vs/base/browser/ui/findinput/replaceInput';
|
||||
import { HistoryInputBox, IHistoryInputOptions } from 'vs/base/browser/ui/inputbox/inputBox';
|
||||
import { KeyCode, KeyMod } from 'vs/base/common/keyCodes';
|
||||
import { ContextKeyExpr, IContextKey, IContextKeyService, RawContextKey } from 'vs/platform/contextkey/common/contextkey';
|
||||
import { KeybindingsRegistry, KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegistry';
|
||||
import { localize } from 'vs/nls';
|
||||
import { DisposableStore, IDisposable, toDisposable } from 'vs/base/common/lifecycle';
|
||||
|
||||
export const historyNavigationVisible = new RawContextKey<boolean>('suggestWidgetVisible', false, localize('suggestWidgetVisible', "Whether suggestion are visible"));
|
||||
|
||||
const HistoryNavigationWidgetFocusContext = 'historyNavigationWidgetFocus';
|
||||
const HistoryNavigationForwardsEnablementContext = 'historyNavigationForwardsEnabled';
|
||||
const HistoryNavigationBackwardsEnablementContext = 'historyNavigationBackwardsEnabled';
|
||||
|
||||
export interface IHistoryNavigationContext extends IDisposable {
|
||||
scopedContextKeyService: IContextKeyService;
|
||||
historyNavigationForwardsEnablement: IContextKey<boolean>;
|
||||
historyNavigationBackwardsEnablement: IContextKey<boolean>;
|
||||
}
|
||||
|
||||
let lastFocusedWidget: IHistoryNavigationWidget | undefined = undefined;
|
||||
const widgets: IHistoryNavigationWidget[] = [];
|
||||
|
||||
export function registerAndCreateHistoryNavigationContext(contextKeyService: IContextKeyService, widget: IHistoryNavigationWidget): IHistoryNavigationContext {
|
||||
if (widgets.includes(widget)) {
|
||||
throw new Error('Cannot register the same widget multiple times');
|
||||
}
|
||||
|
||||
widgets.push(widget);
|
||||
const disposableStore = new DisposableStore();
|
||||
const scopedContextKeyService = disposableStore.add(contextKeyService.createScoped(widget.element));
|
||||
const historyNavigationWidgetFocus = new RawContextKey<boolean>(HistoryNavigationWidgetFocusContext, false).bindTo(scopedContextKeyService);
|
||||
const historyNavigationForwardsEnablement = new RawContextKey<boolean>(HistoryNavigationForwardsEnablementContext, true).bindTo(scopedContextKeyService);
|
||||
const historyNavigationBackwardsEnablement = new RawContextKey<boolean>(HistoryNavigationBackwardsEnablementContext, true).bindTo(scopedContextKeyService);
|
||||
|
||||
const onDidFocus = () => {
|
||||
historyNavigationWidgetFocus.set(true);
|
||||
lastFocusedWidget = widget;
|
||||
};
|
||||
|
||||
const onDidBlur = () => {
|
||||
historyNavigationWidgetFocus.set(false);
|
||||
if (lastFocusedWidget === widget) {
|
||||
lastFocusedWidget = undefined;
|
||||
}
|
||||
};
|
||||
|
||||
// Check for currently being focused
|
||||
if (widget.element === document.activeElement) {
|
||||
onDidFocus();
|
||||
}
|
||||
|
||||
disposableStore.add(widget.onDidFocus(() => onDidFocus()));
|
||||
disposableStore.add(widget.onDidBlur(() => onDidBlur()));
|
||||
disposableStore.add(toDisposable(() => {
|
||||
widgets.splice(widgets.indexOf(widget), 1);
|
||||
onDidBlur();
|
||||
}));
|
||||
|
||||
return {
|
||||
scopedContextKeyService,
|
||||
historyNavigationForwardsEnablement,
|
||||
historyNavigationBackwardsEnablement,
|
||||
dispose() {
|
||||
disposableStore.dispose();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
export class ContextScopedHistoryInputBox extends HistoryInputBox {
|
||||
|
||||
constructor(container: HTMLElement, contextViewProvider: IContextViewProvider | undefined, options: IHistoryInputOptions,
|
||||
@IContextKeyService contextKeyService: IContextKeyService
|
||||
) {
|
||||
super(container, contextViewProvider, options);
|
||||
this._register(registerAndCreateHistoryNavigationContext(contextKeyService, this));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export class ContextScopedFindInput extends FindInput {
|
||||
|
||||
constructor(container: HTMLElement | null, contextViewProvider: IContextViewProvider, options: IFindInputOptions,
|
||||
@IContextKeyService contextKeyService: IContextKeyService
|
||||
) {
|
||||
super(container, contextViewProvider, options);
|
||||
this._register(registerAndCreateHistoryNavigationContext(contextKeyService, this.inputBox));
|
||||
}
|
||||
}
|
||||
|
||||
export class ContextScopedReplaceInput extends ReplaceInput {
|
||||
|
||||
constructor(container: HTMLElement | null, contextViewProvider: IContextViewProvider | undefined, options: IReplaceInputOptions,
|
||||
@IContextKeyService contextKeyService: IContextKeyService, showReplaceOptions: boolean = false
|
||||
) {
|
||||
super(container, contextViewProvider, showReplaceOptions, options);
|
||||
this._register(registerAndCreateHistoryNavigationContext(contextKeyService, this.inputBox));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
KeybindingsRegistry.registerCommandAndKeybindingRule({
|
||||
id: 'history.showPrevious',
|
||||
weight: KeybindingWeight.WorkbenchContrib,
|
||||
when: ContextKeyExpr.and(
|
||||
ContextKeyExpr.has(HistoryNavigationWidgetFocusContext),
|
||||
ContextKeyExpr.equals(HistoryNavigationBackwardsEnablementContext, true),
|
||||
historyNavigationVisible.isEqualTo(false),
|
||||
),
|
||||
primary: KeyCode.UpArrow,
|
||||
secondary: [KeyMod.Alt | KeyCode.UpArrow],
|
||||
handler: (accessor) => {
|
||||
lastFocusedWidget?.showPreviousValue();
|
||||
}
|
||||
});
|
||||
|
||||
KeybindingsRegistry.registerCommandAndKeybindingRule({
|
||||
id: 'history.showNext',
|
||||
weight: KeybindingWeight.WorkbenchContrib,
|
||||
when: ContextKeyExpr.and(
|
||||
ContextKeyExpr.has(HistoryNavigationWidgetFocusContext),
|
||||
ContextKeyExpr.equals(HistoryNavigationForwardsEnablementContext, true),
|
||||
historyNavigationVisible.isEqualTo(false),
|
||||
),
|
||||
primary: KeyCode.DownArrow,
|
||||
secondary: [KeyMod.Alt | KeyCode.DownArrow],
|
||||
handler: (accessor) => {
|
||||
lastFocusedWidget?.showNextValue();
|
||||
}
|
||||
});
|
||||
@@ -0,0 +1,138 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { IHistoryNavigationWidget } from 'vs/base/browser/history';
|
||||
import { IContextViewProvider } from 'vs/base/browser/ui/contextview/contextview';
|
||||
import { FindInput, IFindInputOptions } from 'vs/base/browser/ui/findinput/findInput';
|
||||
import { IReplaceInputOptions, ReplaceInput } from 'vs/base/browser/ui/findinput/replaceInput';
|
||||
import { HistoryInputBox, IHistoryInputOptions } from 'vs/base/browser/ui/inputbox/inputBox';
|
||||
import { KeyCode, KeyMod } from 'vs/base/common/keyCodes';
|
||||
import { ContextKeyExpr, IContextKey, IContextKeyService, RawContextKey } from 'vs/platform/contextkey/common/contextkey';
|
||||
import { KeybindingsRegistry, KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegistry';
|
||||
import { localize } from 'vs/nls';
|
||||
import { DisposableStore, IDisposable, toDisposable } from 'vs/base/common/lifecycle';
|
||||
|
||||
export const historyNavigationVisible = new RawContextKey<boolean>('suggestWidgetVisible', false, localize('suggestWidgetVisible', "Whether suggestion are visible"));
|
||||
|
||||
const HistoryNavigationWidgetFocusContext = 'historyNavigationWidgetFocus';
|
||||
const HistoryNavigationForwardsEnablementContext = 'historyNavigationForwardsEnabled';
|
||||
const HistoryNavigationBackwardsEnablementContext = 'historyNavigationBackwardsEnabled';
|
||||
|
||||
export interface IHistoryNavigationContext extends IDisposable {
|
||||
historyNavigationForwardsEnablement: IContextKey<boolean>;
|
||||
historyNavigationBackwardsEnablement: IContextKey<boolean>;
|
||||
}
|
||||
|
||||
let lastFocusedWidget: IHistoryNavigationWidget | undefined = undefined;
|
||||
const widgets: IHistoryNavigationWidget[] = [];
|
||||
|
||||
export function registerAndCreateHistoryNavigationContext(scopedContextKeyService: IContextKeyService, widget: IHistoryNavigationWidget): IHistoryNavigationContext {
|
||||
if (widgets.includes(widget)) {
|
||||
throw new Error('Cannot register the same widget multiple times');
|
||||
}
|
||||
|
||||
widgets.push(widget);
|
||||
const disposableStore = new DisposableStore();
|
||||
const historyNavigationWidgetFocus = new RawContextKey<boolean>(HistoryNavigationWidgetFocusContext, false).bindTo(scopedContextKeyService);
|
||||
const historyNavigationForwardsEnablement = new RawContextKey<boolean>(HistoryNavigationForwardsEnablementContext, true).bindTo(scopedContextKeyService);
|
||||
const historyNavigationBackwardsEnablement = new RawContextKey<boolean>(HistoryNavigationBackwardsEnablementContext, true).bindTo(scopedContextKeyService);
|
||||
|
||||
const onDidFocus = () => {
|
||||
historyNavigationWidgetFocus.set(true);
|
||||
lastFocusedWidget = widget;
|
||||
};
|
||||
|
||||
const onDidBlur = () => {
|
||||
historyNavigationWidgetFocus.set(false);
|
||||
if (lastFocusedWidget === widget) {
|
||||
lastFocusedWidget = undefined;
|
||||
}
|
||||
};
|
||||
|
||||
// Check for currently being focused
|
||||
if (widget.element === document.activeElement) {
|
||||
onDidFocus();
|
||||
}
|
||||
|
||||
disposableStore.add(widget.onDidFocus(() => onDidFocus()));
|
||||
disposableStore.add(widget.onDidBlur(() => onDidBlur()));
|
||||
disposableStore.add(toDisposable(() => {
|
||||
widgets.splice(widgets.indexOf(widget), 1);
|
||||
onDidBlur();
|
||||
}));
|
||||
|
||||
return {
|
||||
historyNavigationForwardsEnablement,
|
||||
historyNavigationBackwardsEnablement,
|
||||
dispose() {
|
||||
disposableStore.dispose();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
export class ContextScopedHistoryInputBox extends HistoryInputBox {
|
||||
|
||||
constructor(container: HTMLElement, contextViewProvider: IContextViewProvider | undefined, options: IHistoryInputOptions,
|
||||
@IContextKeyService contextKeyService: IContextKeyService
|
||||
) {
|
||||
super(container, contextViewProvider, options);
|
||||
const scopedContextKeyService = this._register(contextKeyService.createScoped(this.element));
|
||||
this._register(registerAndCreateHistoryNavigationContext(scopedContextKeyService, this));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export class ContextScopedFindInput extends FindInput {
|
||||
|
||||
constructor(container: HTMLElement | null, contextViewProvider: IContextViewProvider, options: IFindInputOptions,
|
||||
@IContextKeyService contextKeyService: IContextKeyService
|
||||
) {
|
||||
super(container, contextViewProvider, options);
|
||||
const scopedContextKeyService = this._register(contextKeyService.createScoped(this.inputBox.element));
|
||||
this._register(registerAndCreateHistoryNavigationContext(scopedContextKeyService, this.inputBox));
|
||||
}
|
||||
}
|
||||
|
||||
export class ContextScopedReplaceInput extends ReplaceInput {
|
||||
|
||||
constructor(container: HTMLElement | null, contextViewProvider: IContextViewProvider | undefined, options: IReplaceInputOptions,
|
||||
@IContextKeyService contextKeyService: IContextKeyService, showReplaceOptions: boolean = false
|
||||
) {
|
||||
super(container, contextViewProvider, showReplaceOptions, options);
|
||||
const scopedContextKeyService = this._register(contextKeyService.createScoped(this.inputBox.element));
|
||||
this._register(registerAndCreateHistoryNavigationContext(scopedContextKeyService, this.inputBox));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
KeybindingsRegistry.registerCommandAndKeybindingRule({
|
||||
id: 'history.showPrevious',
|
||||
weight: KeybindingWeight.WorkbenchContrib,
|
||||
when: ContextKeyExpr.and(
|
||||
ContextKeyExpr.has(HistoryNavigationWidgetFocusContext),
|
||||
ContextKeyExpr.equals(HistoryNavigationBackwardsEnablementContext, true),
|
||||
historyNavigationVisible.isEqualTo(false),
|
||||
),
|
||||
primary: KeyCode.UpArrow,
|
||||
secondary: [KeyMod.Alt | KeyCode.UpArrow],
|
||||
handler: (accessor) => {
|
||||
lastFocusedWidget?.showPreviousValue();
|
||||
}
|
||||
});
|
||||
|
||||
KeybindingsRegistry.registerCommandAndKeybindingRule({
|
||||
id: 'history.showNext',
|
||||
weight: KeybindingWeight.WorkbenchContrib,
|
||||
when: ContextKeyExpr.and(
|
||||
ContextKeyExpr.has(HistoryNavigationWidgetFocusContext),
|
||||
ContextKeyExpr.equals(HistoryNavigationForwardsEnablementContext, true),
|
||||
historyNavigationVisible.isEqualTo(false),
|
||||
),
|
||||
primary: KeyCode.DownArrow,
|
||||
secondary: [KeyMod.Alt | KeyCode.DownArrow],
|
||||
handler: (accessor) => {
|
||||
lastFocusedWidget?.showNextValue();
|
||||
}
|
||||
});
|
||||
+104
@@ -0,0 +1,104 @@
|
||||
{
|
||||
"originalFileName": "./1.tst",
|
||||
"modifiedFileName": "./2.tst",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[24,25)",
|
||||
"modifiedRange": "[24,24)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[24,1 -> 25,1]",
|
||||
"modifiedRange": "[24,1 -> 24,1]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[32,33)",
|
||||
"modifiedRange": "[31,32)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[32,59 -> 32,59]",
|
||||
"modifiedRange": "[31,59 -> 31,60]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[32,60 -> 32,60]",
|
||||
"modifiedRange": "[31,61 -> 31,66]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[39,40)",
|
||||
"modifiedRange": "[38,38)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[39,1 -> 40,1]",
|
||||
"modifiedRange": "[38,1 -> 38,1]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[69,70)",
|
||||
"modifiedRange": "[67,67)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[69,1 -> 70,1]",
|
||||
"modifiedRange": "[67,1 -> 67,1]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[84,85)",
|
||||
"modifiedRange": "[81,83)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[84,1 -> 84,1]",
|
||||
"modifiedRange": "[81,1 -> 82,1]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[84,60 -> 84,60]",
|
||||
"modifiedRange": "[82,60 -> 82,61]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[84,61 -> 84,61]",
|
||||
"modifiedRange": "[82,62 -> 82,67]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[95,96)",
|
||||
"modifiedRange": "[93,95)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[95,1 -> 95,1]",
|
||||
"modifiedRange": "[93,1 -> 94,1]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[95,60 -> 95,60]",
|
||||
"modifiedRange": "[94,60 -> 94,61]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[95,61 -> 95,61]",
|
||||
"modifiedRange": "[94,62 -> 94,67]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[105,106)",
|
||||
"modifiedRange": "[104,106)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[105,1 -> 105,1]",
|
||||
"modifiedRange": "[104,1 -> 105,1]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[105,60 -> 105,60]",
|
||||
"modifiedRange": "[105,60 -> 105,61]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[105,61 -> 105,61]",
|
||||
"modifiedRange": "[105,62 -> 105,67]"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
+73
@@ -0,0 +1,73 @@
|
||||
{
|
||||
"originalFileName": "./1.tst",
|
||||
"modifiedFileName": "./2.tst",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[24,25)",
|
||||
"modifiedRange": "[24,24)",
|
||||
"innerChanges": null
|
||||
},
|
||||
{
|
||||
"originalRange": "[32,33)",
|
||||
"modifiedRange": "[31,32)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[32,59 -> 32,61]",
|
||||
"modifiedRange": "[31,59 -> 31,67]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[39,40)",
|
||||
"modifiedRange": "[38,38)",
|
||||
"innerChanges": null
|
||||
},
|
||||
{
|
||||
"originalRange": "[69,70)",
|
||||
"modifiedRange": "[67,67)",
|
||||
"innerChanges": null
|
||||
},
|
||||
{
|
||||
"originalRange": "[84,85)",
|
||||
"modifiedRange": "[81,83)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[84,1 -> 84,1]",
|
||||
"modifiedRange": "[81,1 -> 82,1]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[84,60 -> 84,62]",
|
||||
"modifiedRange": "[82,60 -> 82,68]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[95,96)",
|
||||
"modifiedRange": "[93,95)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[95,1 -> 95,1]",
|
||||
"modifiedRange": "[93,1 -> 94,1]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[95,60 -> 95,62]",
|
||||
"modifiedRange": "[94,60 -> 94,68]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[105,106)",
|
||||
"modifiedRange": "[104,106)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[105,1 -> 105,1]",
|
||||
"modifiedRange": "[104,1 -> 105,1]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[105,60 -> 105,62]",
|
||||
"modifiedRange": "[105,60 -> 105,68]"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
import { assertIsDefined } from 'vs/base/common/types';
|
||||
import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation';
|
||||
import { MenuId, Action2, IAction2Options, IMenuService, SubmenuItemAction } from 'vs/platform/actions/common/actions';
|
||||
import { createActionViewItem } from 'vs/platform/actions/browser/menuEntryActionViewItem';
|
||||
import { parseLinkedText } from 'vs/base/common/linkedText';
|
||||
import { IOpenerService } from 'vs/platform/opener/common/opener';
|
||||
@@ -0,0 +1,6 @@
|
||||
import { assertIsDefined } from 'vs/base/common/types';
|
||||
import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation';
|
||||
import { MenuId, Action2, IAction2Options, SubmenuItemAction } from 'vs/platform/actions/common/actions';
|
||||
import { createActionViewItem } from 'vs/platform/actions/browser/menuEntryActionViewItem';
|
||||
import { parseLinkedText } from 'vs/base/common/linkedText';
|
||||
import { IOpenerService } from 'vs/platform/opener/common/opener';
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"originalFileName": "./1.tst",
|
||||
"modifiedFileName": "./2.tst",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[3,4)",
|
||||
"modifiedRange": "[3,4)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[3,43 -> 3,57]",
|
||||
"modifiedRange": "[3,43 -> 3,43]"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"originalFileName": "./1.tst",
|
||||
"modifiedFileName": "./2.tst",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[3,4)",
|
||||
"modifiedRange": "[3,4)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[3,44 -> 3,58]",
|
||||
"modifiedRange": "[3,44 -> 3,44]"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
import { assertIsDefined } from 'vs/base/common/types';
|
||||
import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation';
|
||||
import { MenuId, Action2, IAction2Options, IMenuServiceFooManager, ServiceManagerLocator } from 'vs/platform/actions/common/actions';
|
||||
import { createActionViewItem } from 'vs/platform/actions/browser/menuEntryActionViewItem';
|
||||
import { parseLinkedText } from 'vs/base/common/linkedText';
|
||||
import { IOpenerService } from 'vs/platform/opener/common/opener';
|
||||
ISFM,SML,SFMKL
|
||||
|
||||
console.log(MenuId, Action2, IAction2Options, IMenuServiceFooManager, ServiceManagerLocator);
|
||||
@@ -0,0 +1,9 @@
|
||||
import { assertIsDefined } from 'vs/base/common/types';
|
||||
import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation';
|
||||
import { MenuId, Action2, IAction2Options, ServiceManagerLocator } from 'vs/platform/actions/common/actions';
|
||||
import { createActionViewItem } from 'vs/platform/actions/browser/menuEntryActionViewItem';
|
||||
import { parseLinkedText } from 'vs/base/common/linkedText';
|
||||
import { IOpenerService } from 'vs/platform/opener/common/opener';
|
||||
SML
|
||||
|
||||
console.log(MenuId, Action2, IAction2Options, ServiceManagerLocator);
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"originalFileName": "./1.tst",
|
||||
"modifiedFileName": "./2.tst",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[3,4)",
|
||||
"modifiedRange": "[3,4)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[3,43 -> 3,67]",
|
||||
"modifiedRange": "[3,43 -> 3,43]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[7,8)",
|
||||
"modifiedRange": "[7,8)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[7,1 -> 7,6]",
|
||||
"modifiedRange": "[7,1 -> 7,1]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[7,9 -> 7,15]",
|
||||
"modifiedRange": "[7,4 -> 7,4]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[9,10)",
|
||||
"modifiedRange": "[9,10)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[9,46 -> 9,70]",
|
||||
"modifiedRange": "[9,46 -> 9,46]"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"originalFileName": "./1.tst",
|
||||
"modifiedFileName": "./2.tst",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[3,4)",
|
||||
"modifiedRange": "[3,4)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[3,44 -> 3,68]",
|
||||
"modifiedRange": "[3,44 -> 3,44]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[7,8)",
|
||||
"modifiedRange": "[7,8)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[7,1 -> 7,6]",
|
||||
"modifiedRange": "[7,1 -> 7,1]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[7,9 -> 7,15]",
|
||||
"modifiedRange": "[7,4 -> 7,4]"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"originalRange": "[9,10)",
|
||||
"modifiedRange": "[9,10)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[9,47 -> 9,71]",
|
||||
"modifiedRange": "[9,47 -> 9,47]"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
import { handledConflictMinimapOverViewRulerColor, unhandledConflictMinimapOverViewRulerColor } from 'vs/workbench/contrib/mergeEditor/browser/view/colors';
|
||||
import { EditorGutter, IGutterItemInfo, IGutterItemView } from '../editorGutter';
|
||||
import { CodeEditorView } from './codeEditorView';
|
||||
@@ -0,0 +1,3 @@
|
||||
import { handledConflictMinimapOverViewRulerColor, unhandledConflictMinimapOverViewRulerColor } from 'vs/workbench/contrib/mergeEditor/browser/view/colors';
|
||||
import { EditorGutter, IGutterItemInfo, IGutterItemView } from '../editorGutter';
|
||||
import { CodeEditorView, TitleMenu } from './codeEditorView';
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"originalFileName": "./1.tst",
|
||||
"modifiedFileName": "./2.tst",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[3,4)",
|
||||
"modifiedRange": "[3,4)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[3,24 -> 3,24]",
|
||||
"modifiedRange": "[3,24 -> 3,35]"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"originalFileName": "./1.tst",
|
||||
"modifiedFileName": "./2.tst",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[3,4)",
|
||||
"modifiedRange": "[3,4)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[3,24 -> 3,24]",
|
||||
"modifiedRange": "[3,24 -> 3,35]"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
const sequence2 = new SequenceFromIntArray(tgtDocLines);
|
||||
@@ -0,0 +1 @@
|
||||
const sequence2 = new LineSequence(tgtDocLines, modifiedLines);
|
||||
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"originalFileName": "./1.tst",
|
||||
"modifiedFileName": "./2.tst",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[1,2)",
|
||||
"modifiedRange": "[1,2)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[1,23 -> 1,23]",
|
||||
"modifiedRange": "[1,23 -> 1,27]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[1,31 -> 1,43]",
|
||||
"modifiedRange": "[1,35 -> 1,35]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[1,55 -> 1,55]",
|
||||
"modifiedRange": "[1,47 -> 1,62]"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"originalFileName": "./1.tst",
|
||||
"modifiedFileName": "./2.tst",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[1,2)",
|
||||
"modifiedRange": "[1,2)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[1,23 -> 1,23]",
|
||||
"modifiedRange": "[1,23 -> 1,27]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[1,31 -> 1,43]",
|
||||
"modifiedRange": "[1,35 -> 1,35]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[1,55 -> 1,55]",
|
||||
"modifiedRange": "[1,47 -> 1,62]"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
interface Test {
|
||||
getDecorationsInViewport(visibleRange: Range): ViewModelDecoration[];
|
||||
getViewLineRenderingData(visibleRange: Range, lineNumber: number): ViewLineRenderingData;
|
||||
getViewLineData(lineNumber: number): ViewLineData;
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
interface Test {
|
||||
getDecorationsInViewport(visibleRange: Range): ViewModelDecoration[];
|
||||
getViewportViewLineRenderingData(visibleRange: Range, lineNumber: number): ViewLineRenderingData;
|
||||
getViewLineRenderingData(lineNumber: number): ViewLineRenderingData;
|
||||
getViewLineData(lineNumber: number): ViewLineData;
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"originalFileName": "./1.tst",
|
||||
"modifiedFileName": "./2.tst",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[3,4)",
|
||||
"modifiedRange": "[3,5)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[3,1 -> 3,2]",
|
||||
"modifiedRange": "[3,1 -> 3,5]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[3,4 -> 3,4]",
|
||||
"modifiedRange": "[3,7 -> 3,15]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[3,91 -> 3,91]",
|
||||
"modifiedRange": "[3,102 -> 4,73]"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"originalFileName": "./1.tst",
|
||||
"modifiedFileName": "./2.tst",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[3,4)",
|
||||
"modifiedRange": "[3,5)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[3,1 -> 3,2]",
|
||||
"modifiedRange": "[3,1 -> 3,5]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[3,9 -> 3,9]",
|
||||
"modifiedRange": "[3,12 -> 3,20]"
|
||||
},
|
||||
{
|
||||
"originalRange": "[3,91 -> 3,91]",
|
||||
"modifiedRange": "[3,102 -> 4,73]"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
const childEndsAfterEnd = lengthGreaterThanEqual(nodeOffsetEnd, endOffset);
|
||||
if (childEndsAfterEnd) {
|
||||
// No child after this child in the requested window, don't recurse
|
||||
node = child;
|
||||
level++;
|
||||
continue whileLoop;
|
||||
}
|
||||
|
||||
const shouldContinue = collectBrackets(child, nodeOffsetStart, nodeOffsetEnd, startOffset, endOffset, push, level + 1, levelPerBracketType);
|
||||
if (!shouldContinue) {
|
||||
return false;
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
const childEndsAfterEnd = lengthGreaterThanEqual(nodeOffsetEnd, endOffset);
|
||||
if (childEndsAfterEnd) {
|
||||
// No child after this child in the requested window, don't recurse
|
||||
node = child;
|
||||
level++;
|
||||
continue whileLoop;
|
||||
}
|
||||
|
||||
const shouldContinue = collectBrackets(child, nodeOffsetStart, nodeOffsetEnd, startOffset, endOffset, push, level + 1, levelPerBracket + 1, levelPerBracketType);
|
||||
if (!shouldContinue) {
|
||||
return false;
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"originalFileName": "./1.tst",
|
||||
"modifiedFileName": "./2.tst",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[9,10)",
|
||||
"modifiedRange": "[9,10)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[9,116 -> 9,116]",
|
||||
"modifiedRange": "[9,116 -> 9,137]"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"originalFileName": "./1.tst",
|
||||
"modifiedFileName": "./2.tst",
|
||||
"diffs": [
|
||||
{
|
||||
"originalRange": "[9,10)",
|
||||
"modifiedRange": "[9,10)",
|
||||
"innerChanges": [
|
||||
{
|
||||
"originalRange": "[9,135 -> 9,135]",
|
||||
"modifiedRange": "[9,135 -> 9,156]"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user