Skip to content

Commit 5332344

Browse files
committed
nes: refactor: extract cursorLineOffset
1 parent 3004d99 commit 5332344

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed

src/extension/xtab/node/xtabCurrentDocument.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,17 @@ export class CurrentDocument {
1212
public readonly lines: Lazy<string[]>;
1313
public readonly cursorOffset: number;
1414

15+
/**
16+
* The 0-based line number of the cursor.
17+
*/
18+
public readonly cursorLineOffset: number;
19+
1520
constructor(
1621
public readonly content: StringText,
1722
public readonly cursorPosition: Position,
1823
) {
1924
this.lines = new Lazy(() => content.getLines());
2025
this.cursorOffset = content.getTransformer().getOffset(cursorPosition);
26+
this.cursorLineOffset = this.cursorPosition.lineNumber - 1;
2127
}
2228
}

src/extension/xtab/node/xtabProvider.ts

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -232,20 +232,18 @@ export class XtabProvider implements IStatelessNextEditProvider {
232232

233233
const currentDocument = new CurrentDocument(activeDocument.documentAfterEdits, cursorPosition);
234234

235-
const cursorLineIdx = cursorPosition.lineNumber - 1 /* to convert to 0-based */;
236-
237-
const cursorLine = currentDocument.lines.value[cursorLineIdx];
235+
const cursorLine = currentDocument.lines.value[currentDocument.cursorLineOffset];
238236
const isCursorAtEndOfLine = cursorPosition.column === cursorLine.trimEnd().length;
239237
if (isCursorAtEndOfLine) {
240238
delaySession.setExtraDebounce(this.configService.getExperimentBasedConfig(ConfigKey.Internal.InlineEditsExtraDebounceEndOfLine, this.expService));
241239
}
242240
telemetryBuilder.setIsCursorAtLineEnd(isCursorAtEndOfLine);
243241

244-
const areaAroundEditWindowLinesRange = this.computeAreaAroundEditWindowLinesRange(currentDocument.lines.value, cursorLineIdx);
242+
const areaAroundEditWindowLinesRange = this.computeAreaAroundEditWindowLinesRange(currentDocument.lines.value, currentDocument.cursorLineOffset);
245243

246-
const editWindowLinesRange = this.computeEditWindowLinesRange(currentDocument.lines.value, cursorLineIdx, request, retryState);
244+
const editWindowLinesRange = this.computeEditWindowLinesRange(currentDocument.lines.value, currentDocument.cursorLineOffset, request, retryState);
247245

248-
const cursorOriginalLinesOffset = Math.max(0, cursorLineIdx - editWindowLinesRange.start);
246+
const cursorOriginalLinesOffset = Math.max(0, currentDocument.cursorLineOffset - editWindowLinesRange.start);
249247
const editWindowLastLineLength = activeDocument.documentAfterEdits.getTransformer().getLineLength(editWindowLinesRange.endExclusive);
250248
const editWindow = activeDocument.documentAfterEdits.getTransformer().getOffsetRange(new Range(editWindowLinesRange.start + 1, 1, editWindowLinesRange.endExclusive, editWindowLastLineLength + 1));
251249

0 commit comments

Comments
 (0)