Skip to content

Commit c779574

Browse files
committed
Implement ILanguageSupport#setLanguageId for merge editor input. With this the editor langauge status shows (but doesn't do anything yet)
1 parent 2936e8f commit c779574

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import { EditorInput } from 'vs/workbench/common/editor/editorInput';
1616
import { AbstractTextResourceEditorInput } from 'vs/workbench/common/editor/textResourceEditorInput';
1717
import { MergeEditorModel } from 'vs/workbench/contrib/mergeEditor/browser/model/mergeEditorModel';
1818
import { IEditorService } from 'vs/workbench/services/editor/common/editorService';
19-
import { ITextFileEditorModel, ITextFileService } from 'vs/workbench/services/textfile/common/textfiles';
19+
import { ILanguageSupport, ITextFileEditorModel, ITextFileService } from 'vs/workbench/services/textfile/common/textfiles';
2020

2121
export class MergeEditorInputData {
2222
constructor(
@@ -27,7 +27,7 @@ export class MergeEditorInputData {
2727
) { }
2828
}
2929

30-
export class MergeEditorInput extends AbstractTextResourceEditorInput {
30+
export class MergeEditorInput extends AbstractTextResourceEditorInput implements ILanguageSupport {
3131

3232
static readonly ID = 'mergeEditor.Input';
3333

@@ -140,6 +140,9 @@ export class MergeEditorInput extends AbstractTextResourceEditorInput {
140140
return Boolean(this._outTextModel?.isDirty());
141141
}
142142

143+
setLanguageId(languageId: string, _setExplicitly?: boolean): void {
144+
this._model?.setLanguageId(languageId);
145+
}
143146

144147
// implement get/set languageId
145148
// implement get/set encoding

src/vs/workbench/contrib/mergeEditor/browser/model/mergeEditorModel.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ import { LineRange } from 'vs/workbench/contrib/mergeEditor/browser/model/lineRa
2020
import { TextModelDiffChangeReason, TextModelDiffs, TextModelDiffState } from 'vs/workbench/contrib/mergeEditor/browser/model/textModelDiffs';
2121
import { concatArrays, leftJoin, elementAtOrUndefined } from 'vs/workbench/contrib/mergeEditor/browser/utils';
2222
import { ModifiedBaseRange, ModifiedBaseRangeState } from './modifiedBaseRange';
23+
import { IModelService } from 'vs/editor/common/services/model';
24+
import { ILanguageService } from 'vs/editor/common/languages/language';
2325

2426
export const enum MergeEditorModelState {
2527
initializing = 1,
@@ -134,7 +136,9 @@ export class MergeEditorModel extends EditorModel {
134136
readonly input2Detail: string | undefined,
135137
readonly input2Description: string | undefined,
136138
readonly result: ITextModel,
137-
@IEditorWorkerService private readonly editorWorkerService: IEditorWorkerService
139+
@IEditorWorkerService private readonly editorWorkerService: IEditorWorkerService,
140+
@IModelService private readonly modelService: IModelService,
141+
@ILanguageService private readonly languageService: ILanguageService,
138142
) {
139143
super();
140144

@@ -329,6 +333,10 @@ export class MergeEditorModel extends EditorModel {
329333
public setHandled(baseRange: ModifiedBaseRange, handled: boolean, tx: ITransaction): void {
330334
this.modifiedBaseRangeHandlingStateStores.get().get(baseRange)!.set(handled, tx);
331335
}
336+
337+
public setLanguageId(languageId: string): void {
338+
this.modelService.setMode(this.result, this.languageService.createById(languageId));
339+
}
332340
}
333341

334342
function getEditForBase(baseRange: ModifiedBaseRange, state: ModifiedBaseRangeState): { edit: LineRangeEdit | undefined; effectiveState: ModifiedBaseRangeState } {

0 commit comments

Comments
 (0)