Change:
Does this issue occur when all extensions are disabled?: Yes Word wrap doesn't affect the text of the base in the merge editor, regardless of whether the base is displayed in the center or at the top. Steps to reproduce: a branch with a conflict the merge editor word wrap Base in the center ! Base at the top ! Version: 1.76.0-insider (system setup) Commit: Date: 2023-02-09T05:23:28.458Z OS: Windows_NT x64 10.0. Sandboxed: Yes
I'll pick this up

Discussion:
this._transientWatchers[uri] = w; } <del> w.set(key, value); this._onDidChangeTransientModelProperty.fire(model); </del> <ins> const previousValue = w.get(key); if (previousValue !== value) { w.set(key, value); this._onDidChangeTransientModelProperty.fire(model); } </ins> } public getTransientModelProperty(model: ITextModel, key: string): any {

import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService'; import { IEditorOptions as ICodeEditorOptions } from 'vs/editor/common/config/editorOptions'; import { ICodeEditorViewState, ScrollType } from 'vs/editor/common/editorCommon'; <ins> import { ITextModel } from 'vs/editor/common/model'; </ins> import { ITextResourceConfigurationService } from 'vs/editor/common/services/textResourceConfiguration'; import { localize } from 'vs/nls'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration';

this.input1View.updateOptions(inputOptions); this.input2View.updateOptions(inputOptions); <del> this.baseViewOptions.set(this.input2View.editor.getRawOptions(), undefined); </del> <ins> this.baseViewOptions.set({ ...this.input2View.editor.getRawOptions() }, undefined); </ins> this.inputResultView.updateOptions(options); }

} // word wrap special case - sync transient state from result model to input[1|2] models <del> const mirrorWordWrapTransientState = () => { const state = readTransientState(model.resultTextModel, this._codeEditorService); writeTransientState(model.input2.textModel, state, this._codeEditorService); writeTransientState(model.input1.textModel, state, this._codeEditorService); </del> <ins> const mirrorWordWrapTransientState = (candidate: ITextModel) => { const candidateState = readTransientState(candidate, this._codeEditorService); writeTransientState(model.input2.textModel, candidateState, this._codeEditorService); writeTransientState(model.input1.textModel, candidateState, this._codeEditorService); writeTransientState(model.resultTextModel, candidateState, this._codeEditorService); const baseTextModel = this.baseView.get()?.editor.getModel(); if (baseTextModel) { writeTransientState(baseTextModel, candidateState, this._codeEditorService); } </ins> }; this._sessionDisposables.add(this._codeEditorService.onDidChangeTransientModelProperty(candidate => { <del> if (candidate === this.inputResultView.editor.getModel()) { mirrorWordWrapTransientState(); } </del> <ins> mirrorWordWrapTransientState(candidate); </ins> })); <del> mirrorWordWrapTransientState(); </del> <ins> mirrorWordWrapTransientState(this.inputResultView.editor.getModel()!); </ins> // detect when base, input1, and input2 become empty and replace THIS editor with its result editor // TODO@jrieken@hediet this needs a better/cleaner solution