cursorOffsetForVisualLineMove method
int
cursorOffsetForVisualLineMove(
- TextDocument document,
- EditorState state, {
- required int lineDelta,
- int desiredDisplayColumn = -1,
- TextPosition? cursor,
Implementation
int cursorOffsetForVisualLineMove(
TextDocument document,
EditorState state, {
required int lineDelta,
int desiredDisplayColumn = -1,
TextPosition? cursor,
}) {
final current = resolveCursorVisualPosition(
document,
state,
cursor: cursor,
);
if (current == null) {
return 0;
}
final lines = buildLines(document, state);
if (lines.isEmpty) {
return 0;
}
final targetRow = (current.visualRow + lineDelta).clamp(
0,
lines.length - 1,
);
final targetDisplayColumn = desiredDisplayColumn >= 0
? desiredDisplayColumn
: current.displayColumn;
return offsetForDisplayColumn(
document,
state,
visualRow: targetRow,
displayColumn: targetDisplayColumn,
);
}