Skip to content

Commit ecdfb50

Browse files
authored
sync wordwrap transient state to input1/2 editors (microsoft#158484)
fixes microsoft#155280
1 parent 4b8433f commit ecdfb50

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

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

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import { AbstractTextEditor } from 'vs/workbench/browser/parts/editor/textEditor
3939
import { DEFAULT_EDITOR_ASSOCIATION, EditorInputWithOptions, IEditorOpenContext, IResourceMergeEditorInput } from 'vs/workbench/common/editor';
4040
import { EditorInput } from 'vs/workbench/common/editor/editorInput';
4141
import { applyTextEditorOptions } from 'vs/workbench/common/editor/editorOptions';
42+
import { readTransientState, writeTransientState } from 'vs/workbench/contrib/codeEditor/browser/toggleWordWrap';
4243
import { MergeEditorInput } from 'vs/workbench/contrib/mergeEditor/browser/mergeEditorInput';
4344
import { DocumentMapping, getOppositeDirection, MappingDirection } from 'vs/workbench/contrib/mergeEditor/browser/model/mapping';
4445
import { MergeEditorModel } from 'vs/workbench/contrib/mergeEditor/browser/model/mergeEditorModel';
@@ -117,6 +118,7 @@ export class MergeEditor extends AbstractTextEditor<IMergeEditorViewState> {
117118
@IEditorService editorService: IEditorService,
118119
@IEditorGroupsService editorGroupService: IEditorGroupsService,
119120
@IFileService fileService: IFileService,
121+
@ICodeEditorService private readonly _codeEditorService: ICodeEditorService,
120122
) {
121123
super(MergeEditor.ID, telemetryService, instantiation, storageService, textResourceConfigurationService, themeService, editorService, editorGroupService, fileService);
122124

@@ -177,7 +179,6 @@ export class MergeEditor extends AbstractTextEditor<IMergeEditorViewState> {
177179
)
178180
);
179181

180-
181182
// TODO@jrieken make this proper: add menu id and allow extensions to contribute
182183
const toolbarMenu = this._menuService.createMenu(MenuId.MergeToolbar, this._contextKeyService);
183184
const toolbarMenuDisposables = new DisposableStore();
@@ -377,6 +378,19 @@ export class MergeEditor extends AbstractTextEditor<IMergeEditorViewState> {
377378
});
378379
}, 'update alignment view zones'));
379380

381+
// word wrap special case - sync transient state from result model to input[1|2] models
382+
const mirrorWordWrapTransientState = () => {
383+
const state = readTransientState(model.resultTextModel, this._codeEditorService);
384+
writeTransientState(model.input2.textModel, state, this._codeEditorService);
385+
writeTransientState(model.input1.textModel, state, this._codeEditorService);
386+
};
387+
this._sessionDisposables.add(this._codeEditorService.onDidChangeTransientModelProperty(candidate => {
388+
if (candidate === this.inputResultView.editor.getModel()) {
389+
mirrorWordWrapTransientState();
390+
}
391+
}));
392+
mirrorWordWrapTransientState();
393+
380394

381395
// detect when base, input1, and input2 become empty and replace THIS editor with its result editor
382396
// TODO@jrieken@hediet this needs a better/cleaner solution

0 commit comments

Comments
 (0)