1118
}
1119
}
1121
>
const start = this._validatePosition(_range.startLineNumber, _range.startColumn, StringOffsetValidationType.Relaxed);
1122
>
const end = this._validatePosition(_range.endLineNumber, _range.endColumn, StringOffsetValidationType.Relaxed);
1123
>
1124
>
const startLineNumber = start.lineNumber;
1125
>
const startColumn = start.column;
1126
>
const endLineNumber = end.lineNumber;
1127
>
const endColumn = end.column;
1128
>
1129
>
if (validationType === StringOffsetValidationType.SurrogatePairs) {
1130
>
const charCodeBeforeStart = (startColumn > 1 ? this._buffer.getLineCharCode(startLineNumber, startColumn - 2) : 0);
1131
>
const charCodeBeforeEnd = (endColumn > 1 && endColumn <= this._buffer.getLineLength(endLineNumber) ? this._buffer.getLineCharCode(endLineNumber, endColumn - 2) : 0);
1132
>
1133
>
const startInsideSurrogatePair = strings.isHighSurrogate(charCodeBeforeStart);
1134
>
const endInsideSurrogatePair = strings.isHighSurrogate(charCodeBeforeEnd);
1135
>
1136
>
if (!startInsideSurrogatePair && !endInsideSurrogatePair) {
1137
return new Range(startLineNumber, startColumn, endLineNumber, endColumn);
1138
}
1139
1140
>
if (startLineNumber === endLineNumber && startColumn === endColumn) {
textModel.ts
1141
// do not expand a collapsed range, simply move it to a valid location
1142
return new Range(startLineNumber, startColumn - 1, endLineNumber, endColumn - 1);
1143
}
1144
1145
>
if (startInsideSurrogatePair && endInsideSurrogatePair) {
textModel.ts
1146
// expand range at both ends
1147
return new Range(startLineNumber, startColumn - 1, endLineNumber, endColumn + 1);