162
163
private _getOrCreateViewModelDecoration(modelDecoration: IModelDecoration): ViewModelDecoration {
165
>
let r = this._decorationsCache[id];
166
>
if (!r) {
167
>
const modelRange = modelDecoration.range;
168
>
const options = modelDecoration.options;
169
>
let viewRange: Range;
170
>
if (options.isWholeLine) {
171
const start = this.coordinatesConverter.convertModelPositionToViewPosition(new Position(modelRange.startLineNumber, 1), PositionAffinity.Left, false, true);
172
const end = this.coordinatesConverter.convertModelPositionToViewPosition(new Position(modelRange.endLineNumber, this.model.getLineMaxColumn(modelRange.endLineNumber)), PositionAffinity.Right);
173
viewRange = new Range(start.lineNumber, start.column, end.lineNumber, end.column);
175
>
// For backwards compatibility reasons, we want injected text before any decoration.
176
>
// Thus, move decorations to the right.
177
>
viewRange = this.coordinatesConverter.convertModelRangeToViewRange(modelRange, PositionAffinity.Right);
178
>
}
179
>
r = new ViewModelDecoration(viewRange, options);
180
>
this._decorationsCache[id] = r;
181
>
}
182
>
return r;
183
>
}
184
}
185