Skip to content

Commit 56a7b87

Browse files
hedietlramos15
andauthored
* Fixes microsoft#158959 * Improves code & fixes CI. * Improves code. * Fix weak matches for diff editor Co-authored-by: Logan Ramos <[email protected]>
1 parent 21ae452 commit 56a7b87

File tree

3 files changed

+30
-18
lines changed

3 files changed

+30
-18
lines changed

src/vs/workbench/contrib/mergeEditor/browser/commands/commands.ts

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,9 @@ import { URI, UriComponents } from 'vs/base/common/uri';
88
import { localize } from 'vs/nls';
99
import { ILocalizedString } from 'vs/platform/action/common/action';
1010
import { Action2, IAction2Options, MenuId } from 'vs/platform/actions/common/actions';
11-
import { ICommandService } from 'vs/platform/commands/common/commands';
11+
import { ITextEditorOptions } from 'vs/platform/editor/common/editor';
1212
import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation';
1313
import { IOpenerService } from 'vs/platform/opener/common/opener';
14-
import { API_OPEN_DIFF_EDITOR_COMMAND_ID } from 'vs/workbench/browser/parts/editor/editorCommands';
1514
import { IResourceMergeEditorInput } from 'vs/workbench/common/editor';
1615
import { MergeEditorInputData } from 'vs/workbench/contrib/mergeEditor/browser/mergeEditorInput';
1716
import { MergeEditor } from 'vs/workbench/contrib/mergeEditor/browser/view/mergeEditor';
@@ -336,8 +335,8 @@ export class CompareInput1WithBaseCommand extends MergeEditorAction {
336335
}
337336

338337
override runWithViewModel(viewModel: MergeEditorViewModel, accessor: ServicesAccessor): void {
339-
const commandService = accessor.get(ICommandService);
340-
mergeEditorCompare(viewModel, commandService, 1);
338+
const editorService = accessor.get(IEditorService);
339+
mergeEditorCompare(viewModel, editorService, 1);
341340
}
342341
}
343342

@@ -361,20 +360,29 @@ export class CompareInput2WithBaseCommand extends MergeEditorAction {
361360
}
362361

363362
override runWithViewModel(viewModel: MergeEditorViewModel, accessor: ServicesAccessor): void {
364-
const commandService = accessor.get(ICommandService);
365-
mergeEditorCompare(viewModel, commandService, 2);
363+
const editorService = accessor.get(IEditorService);
364+
mergeEditorCompare(viewModel, editorService, 2);
366365
}
367366
}
368367

369-
function mergeEditorCompare(viewModel: MergeEditorViewModel, commandService: ICommandService, inputNumber: 1 | 2) {
368+
async function mergeEditorCompare(viewModel: MergeEditorViewModel, editorService: IEditorService, inputNumber: 1 | 2) {
370369
const model = viewModel.model;
371-
const base = model.base.uri;
372-
const input = inputNumber === 1 ? model.input1.textModel.uri : model.input2.textModel.uri;
373-
openDiffEditor(commandService, base, input);
374-
}
375-
376-
function openDiffEditor(commandService: ICommandService, left: URI, right: URI, label?: string) {
377-
commandService.executeCommand(API_OPEN_DIFF_EDITOR_COMMAND_ID, left, right, label);
370+
const base = model.base;
371+
const input = inputNumber === 1 ? viewModel.inputCodeEditorView1.editor : viewModel.inputCodeEditorView2.editor;
372+
373+
const lineNumber = input.getPosition()!.lineNumber;
374+
await editorService.openEditor({
375+
original: { resource: base.uri },
376+
modified: { resource: input.getModel()!.uri },
377+
options: {
378+
selection: {
379+
startLineNumber: lineNumber,
380+
startColumn: 1,
381+
},
382+
revealIfOpened: true,
383+
revealIfVisible: true,
384+
} as ITextEditorOptions
385+
});
378386
}
379387

380388
export class OpenBaseFile extends MergeEditorAction {

src/vs/workbench/contrib/mergeEditor/browser/view/viewModel.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,9 @@ export class MergeEditorViewModel {
6969

7070
constructor(
7171
public readonly model: MergeEditorModel,
72-
private readonly inputCodeEditorView1: InputCodeEditorView,
73-
private readonly inputCodeEditorView2: InputCodeEditorView,
74-
private readonly resultCodeEditorView: ResultCodeEditorView
72+
public readonly inputCodeEditorView1: InputCodeEditorView,
73+
public readonly inputCodeEditorView2: InputCodeEditorView,
74+
public readonly resultCodeEditorView: ResultCodeEditorView
7575
) { }
7676

7777
public setState(

src/vs/workbench/services/editor/common/editorGroupFinder.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ import { isEqual } from 'vs/base/common/resources';
77
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
88
import { EditorActivation } from 'vs/platform/editor/common/editor';
99
import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation';
10-
import { EditorResourceAccessor, EditorInputWithOptions, isEditorInputWithOptions, IUntypedEditorInput, isEditorInput, EditorInputCapabilities } from 'vs/workbench/common/editor';
10+
import { EditorResourceAccessor, EditorInputWithOptions, isEditorInputWithOptions, IUntypedEditorInput, isEditorInput, EditorInputCapabilities, isResourceDiffEditorInput } from 'vs/workbench/common/editor';
11+
import { DiffEditorInput } from 'vs/workbench/common/editor/diffEditorInput';
1112
import { EditorInput } from 'vs/workbench/common/editor/editorInput';
1213
import { IEditorGroup, GroupsOrder, preferredSideBySideGroupDirection, IEditorGroupsService } from 'vs/workbench/services/editor/common/editorGroupsService';
1314
import { PreferredGroup, SIDE_GROUP } from 'vs/workbench/services/editor/common/editorService';
@@ -205,6 +206,9 @@ function matchesEditor(typedEditor: EditorInput, editor: EditorInput | IUntypedE
205206
// editors that have no `override` defined.
206207
//
207208
// TODO@lramos15 https://github.com/microsoft/vscode/issues/131619
209+
if (typedEditor instanceof DiffEditorInput && isResourceDiffEditorInput(editor)) {
210+
return matchesEditor(typedEditor.primary, editor.modified) && matchesEditor(typedEditor.secondary, editor.original);
211+
}
208212
if (typedEditor.resource) {
209213
return isEqual(typedEditor.resource, EditorResourceAccessor.getCanonicalUri(editor));
210214
}

0 commit comments

Comments
 (0)