void SetColumn() { LineSegment curLine = this.document.GetLine(this.Line); if (curLine == null) { return; } this.location.Column = curLine.GetLogicalColumn(editor, this.DesiredColumn); if (curLine.GetVisualColumn(editor, this.location.Column) < this.DesiredColumn) { this.location.Column = editor.GetNextVirtualColumn(Line, this.location.Column); } else { if (this.Column > curLine.EditableLength) { this.location.Column = System.Math.Min(curLine.EditableLength, System.Math.Max(0, this.Column)); if (AllowCaretBehindLineEnd) { this.location.Column = editor.GetNextVirtualColumn(Line, this.location.Column); } } } }
public static void Right(TextEditorData data) { if (Platform.IsMac && data.IsSomethingSelected && !data.Caret.PreserveSelection) { data.Caret.Offset = System.Math.Max(data.SelectionAnchor, data.Caret.Offset); data.ClearSelection(); return; } LineSegment line = data.Document.GetLine(data.Caret.Line); IEnumerable <FoldSegment> foldings = data.Document.GetStartFoldings(line); FoldSegment segment = null; foreach (FoldSegment folding in foldings) { if (folding.IsFolded && folding.Column == data.Caret.Column) { segment = folding; break; } } if (segment != null) { data.Caret.Location = data.Document.OffsetToLocation(segment.EndLine.Offset + segment.EndColumn); return; } if (data.Caret.Column < line.EditableLength + 1 || data.Caret.AllowCaretBehindLineEnd) { if (data.Caret.Column >= line.EditableLength + 1) { int nextColumn = data.GetNextVirtualColumn(data.Caret.Line, data.Caret.Column); if (data.Caret.Column != nextColumn) { data.Caret.Column = nextColumn; } else { data.Caret.Location = new DocumentLocation(data.Caret.Line + 1, DocumentLocation.MinColumn); data.Caret.CheckCaretPosition(); } } else { data.Caret.Column++; } } else if (data.Caret.Line + 1 <= data.Document.LineCount) { data.Caret.Location = new DocumentLocation(data.Caret.Line + 1, DocumentLocation.MinColumn); } }
public static void LineEnd(TextEditorData data) { if (!data.Caret.PreserveSelection) { data.ClearSelection(); } DocumentLocation newLocation = data.Caret.Location; LineSegment line = data.Document.GetLine(data.Caret.Line); newLocation.Column = line.EditableLength + 1; // handle folding IEnumerable <FoldSegment> foldings = data.Document.GetStartFoldings(line); FoldSegment segment = null; foreach (FoldSegment folding in foldings) { if (folding.IsFolded && folding.Contains(data.Document.LocationToOffset(newLocation))) { segment = folding; break; } } if (segment != null) { newLocation = data.Document.OffsetToLocation(segment.EndLine.Offset + segment.EndColumn); } if (newLocation != data.Caret.Location) { data.Caret.Location = newLocation; } if (data.Caret.AllowCaretBehindLineEnd) { int nextColumn = data.GetNextVirtualColumn(data.Caret.Line, data.Caret.Column); if (nextColumn != data.Caret.Column) { data.Caret.Column = nextColumn; } } }
public static void Right (TextEditorData data) { if (Platform.IsMac && data.IsSomethingSelected && !data.Caret.PreserveSelection) { data.Caret.Offset = System.Math.Max (data.SelectionAnchor, data.Caret.Offset); data.ClearSelection (); return; } LineSegment line = data.Document.GetLine (data.Caret.Line); IEnumerable<FoldSegment> foldings = data.Document.GetStartFoldings (line); FoldSegment segment = null; foreach (FoldSegment folding in foldings) { if (folding.IsFolded && folding.Column == data.Caret.Column) { segment = folding; break; } } if (segment != null) { data.Caret.Location = data.Document.OffsetToLocation (segment.EndLine.Offset + segment.EndColumn); return; } if (data.Caret.Column < line.EditableLength || data.Caret.AllowCaretBehindLineEnd) { if (data.Caret.Column >= line.EditableLength) { int nextColumn = data.GetNextVirtualColumn (data.Caret.Line, data.Caret.Column); if (data.Caret.Column != nextColumn) { data.Caret.Column = nextColumn; } else { data.Caret.Location = new DocumentLocation (data.Caret.Line + 1, 0); data.Caret.CheckCaretPosition (); } } else { data.Caret.Column++; } } else if (data.Caret.Line + 1 < data.Document.LineCount) { data.Caret.Location = new DocumentLocation (data.Caret.Line + 1, 0); } }
public static void LineEnd (TextEditorData data) { if (!data.Caret.PreserveSelection) data.ClearSelection (); DocumentLocation newLocation = data.Caret.Location; LineSegment line = data.Document.GetLine (data.Caret.Line); newLocation.Column = line.EditableLength; // handle folding IEnumerable<FoldSegment> foldings = data.Document.GetStartFoldings (line); FoldSegment segment = null; foreach (FoldSegment folding in foldings) { if (folding.IsFolded && folding.Contains (data.Document.LocationToOffset (newLocation))) { segment = folding; break; } } if (segment != null) newLocation = data.Document.OffsetToLocation (segment.EndLine.Offset + segment.EndColumn); if (newLocation != data.Caret.Location) { data.Caret.Location = newLocation; } if (data.Caret.AllowCaretBehindLineEnd) { int nextColumn = data.GetNextVirtualColumn (data.Caret.Line, data.Caret.Column); if (nextColumn != data.Caret.Column) data.Caret.Column = nextColumn; } }