2
// <copyright see="prj:///doc/copyright.txt"/>
3
// <license see="prj:///doc/license.txt"/>
4
// <owner name="Mike Krüger" email="mike@icsharpcode.net"/>
5
// <version value="$version"/>
11
using MonoDevelop.TextEditor.Document;
13
namespace MonoDevelop.TextEditor.Actions
15
public class Home : AbstractEditAction
17
public override void Execute(TextArea textArea)
19
LineSegment curLine = textArea.Document.GetLineSegment(textArea.Caret.Line);
21
if (TextUtilities.IsEmptyLine(textArea.Document, curLine)) {
22
if (textArea.Caret.Column != 0) {
23
textArea.Caret.Column = 0;
25
textArea.Caret.Column = curLine.Length;
28
int firstCharOffset = TextUtilities.GetFirstNonWSChar(textArea.Document, curLine.Offset);
29
int firstCharColumn = firstCharOffset - curLine.Offset;
31
if (textArea.Caret.Column == firstCharColumn) {
32
textArea.Caret.Column = 0;
34
textArea.Caret.Column = firstCharColumn;
38
textArea.SetDesiredColumn();
42
public class End : AbstractEditAction
44
public override void Execute(TextArea textArea)
46
LineSegment curLine = textArea.Document.GetLineSegment(textArea.Caret.Line);
47
if (textArea.Caret.Column != curLine.Length) {
48
textArea.Caret.Column = curLine.Length;
49
textArea.SetDesiredColumn();
55
public class MoveToStart : AbstractEditAction
57
public override void Execute(TextArea textArea)
59
if (textArea.Caret.Line != 0 || textArea.Caret.Column != 0) {
60
textArea.Caret.Position = new Point(0, 0);
61
textArea.SetDesiredColumn();
67
public class MoveToEnd : AbstractEditAction
69
public override void Execute(TextArea textArea)
71
Point endPos = textArea.Document.OffsetToPosition(textArea.Document.TextLength);
72
if (textArea.Caret.Position != endPos) {
73
textArea.Caret.Position = endPos;
74
textArea.SetDesiredColumn();