mirror of
https://github.com/Microsoft/vscode
synced 2024-10-04 02:14:06 +00:00
Merge pull request #206055 from microsoft/aiday/doingChecksOnLineNumberAndLength
Doing checks on length and line number in the `inlineCompletionsModel` file
This commit is contained in:
commit
ba8645668e
|
@ -4,7 +4,7 @@
|
|||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { mapFindFirst } from 'vs/base/common/arraysFind';
|
||||
import { BugIndicatingError, onUnexpectedExternalError } from 'vs/base/common/errors';
|
||||
import { BugIndicatingError, onUnexpectedError, onUnexpectedExternalError } from 'vs/base/common/errors';
|
||||
import { Disposable } from 'vs/base/common/lifecycle';
|
||||
import { IObservable, IReader, ITransaction, autorun, derived, derivedHandleChanges, derivedOpts, recomputeInitiallyAndOnChange, observableSignal, observableValue, subtransaction, transaction } from 'vs/base/common/observable';
|
||||
import { commonPrefixLength, splitLinesIncludeSeparators } from 'vs/base/common/strings';
|
||||
|
@ -470,6 +470,10 @@ export class InlineCompletionsModel extends Disposable {
|
|||
}
|
||||
|
||||
export function getSecondaryEdits(textModel: ITextModel, positions: readonly Position[], primaryEdit: SingleTextEdit): SingleTextEdit[] {
|
||||
if (positions.length === 1) {
|
||||
// No secondary cursor positions
|
||||
return [];
|
||||
}
|
||||
const primaryPosition = positions[0];
|
||||
const secondaryPositions = positions.slice(1);
|
||||
const primaryEditStartPosition = primaryEdit.range.getStartPosition();
|
||||
|
@ -478,6 +482,13 @@ export function getSecondaryEdits(textModel: ITextModel, positions: readonly Pos
|
|||
Range.fromPositions(primaryPosition, primaryEditEndPosition)
|
||||
);
|
||||
const positionWithinTextEdit = subtractPositions(primaryPosition, primaryEditStartPosition);
|
||||
if (positionWithinTextEdit.lineNumber < 1) {
|
||||
onUnexpectedError(new BugIndicatingError(
|
||||
`positionWithinTextEdit line number should be bigger than 0.
|
||||
Invalid subtraction between ${primaryPosition.toString()} and ${primaryEditStartPosition.toString()}`
|
||||
));
|
||||
return [];
|
||||
}
|
||||
const secondaryEditText = substringPos(primaryEdit.text, positionWithinTextEdit);
|
||||
return secondaryPositions.map(pos => {
|
||||
const posEnd = addPositions(subtractPositions(pos, primaryEditStartPosition), primaryEditEndPosition);
|
||||
|
|
Loading…
Reference in a new issue