Author: mkrueger
Date: 2008-02-03 09:30:34 -0500 (Sun, 03 Feb 2008)
New Revision: 94690
Modified:
trunk/monodevelop/main/src/addins/Mono.Texteditor/ChangeLog
trunk/monodevelop/main/src/addins/Mono.Texteditor/Mono.TextEditor/DefaultEditActions.cs
trunk/monodevelop/main/src/addins/Mono.Texteditor/Mono.TextEditor/TextEditorData.cs
Log:
* Mono.TextEditor/DefaultEditActions.cs,
Mono.TextEditor/TextEditorData.cs: Some changes to remove code
duplication.
Modified: trunk/monodevelop/main/src/addins/Mono.Texteditor/ChangeLog
===================================================================
--- trunk/monodevelop/main/src/addins/Mono.Texteditor/ChangeLog 2008-02-03
14:13:22 UTC (rev 94689)
+++ trunk/monodevelop/main/src/addins/Mono.Texteditor/ChangeLog 2008-02-03
14:30:34 UTC (rev 94690)
@@ -1,6 +1,11 @@
2008-02-03 Mike Krüger <[EMAIL PROTECTED]>
* Mono.TextEditor/DefaultEditActions.cs,
Mono.TextEditor/TextEditorData.cs:
+ Some changes to remove code duplication.
+
+2008-02-03 Mike Krüger <[EMAIL PROTECTED]>
+
+ * Mono.TextEditor/DefaultEditActions.cs,
Mono.TextEditor/TextEditorData.cs:
Fixed Insert/Remove tab selection range bug.
2008-02-03 Mike Krüger <[EMAIL PROTECTED]>
Modified:
trunk/monodevelop/main/src/addins/Mono.Texteditor/Mono.TextEditor/DefaultEditActions.cs
===================================================================
---
trunk/monodevelop/main/src/addins/Mono.Texteditor/Mono.TextEditor/DefaultEditActions.cs
2008-02-03 14:13:22 UTC (rev 94689)
+++
trunk/monodevelop/main/src/addins/Mono.Texteditor/Mono.TextEditor/DefaultEditActions.cs
2008-02-03 14:30:34 UTC (rev 94690)
@@ -500,29 +500,34 @@
return 0;
}
+ public static void RemoveIndentSelection (TextEditorData data)
+ {
+ int startLineNr =
data.Document.Splitter.GetLineNumberForOffset (data.SelectionRange.Offset);
+ int endLineNr =
data.Document.Splitter.GetLineNumberForOffset (data.SelectionRange.EndOffset);
+ data.Document.BeginAtomicUndo ();
+ int first = -1;
+ int last = 0;
+ foreach (LineSegment line in data.SelectedLines) {
+ last = RemoveTabInLine (data.Document, line);
+ if (first < 0)
+ first = last;
+ }
+ data.SelectionStart.Column -= first;
+ if (data.SelectionEnd.Column != 0) {
+ data.SelectionEnd.Column -= last;
+ data.Caret.PreserveSelection = true;
+ data.Caret.Column -= last;
+ data.Caret.PreserveSelection = false;
+ }
+ data.Document.EndAtomicUndo ();
+ data.Document.RequestUpdate (new MultipleLineUpdate
(startLineNr, endLineNr));
+ data.Document.CommitDocumentUpdate ();
+ }
+
public override void Run (TextEditorData data)
{
if (data.IsSomethingSelected &&
data.SelectionStart.Segment != data.SelectionEnd.Segment) {
- int startLineNr =
data.Document.Splitter.GetLineNumberForOffset (data.SelectionRange.Offset);
- int endLineNr =
data.Document.Splitter.GetLineNumberForOffset (data.SelectionRange.EndOffset);
- data.Document.BeginAtomicUndo ();
- int first = -1;
- int last = 0;
- foreach (LineSegment line in
data.SelectedLines) {
- last = RemoveTabInLine (data.Document,
line);
- if (first < 0)
- first = last;
- }
- data.SelectionStart.Column -= first;
- if (data.SelectionEnd.Column != 0) {
- data.SelectionEnd.Column -= last;
- data.Caret.PreserveSelection = true;
- data.Caret.Column -= last;
- data.Caret.PreserveSelection = false;
- }
- data.Document.EndAtomicUndo ();
- data.Document.RequestUpdate (new
MultipleLineUpdate (startLineNr, endLineNr));
- data.Document.CommitDocumentUpdate ();
+ RemoveIndentSelection (data);
return;
} else {
LineSegment line = data.Document.Splitter.Get
(data.Caret.Line);
@@ -546,25 +551,30 @@
public class InsertTab : EditAction
{
+ public static void IndentSelection (TextEditorData data)
+ {
+ int startLineNr =
data.Document.Splitter.GetLineNumberForOffset (data.SelectionRange.Offset);
+ int endLineNr =
data.Document.Splitter.GetLineNumberForOffset (data.SelectionRange.EndOffset);
+ data.Document.BeginAtomicUndo ();
+ foreach (LineSegment line in data.SelectedLines) {
+ data.Document.Buffer.Insert (line.Offset, new
StringBuilder(TextEditorOptions.Options.IndentationString));
+ }
+ data.SelectionStart.Column++;
+ if (data.SelectionEnd.Column != 0) {
+ data.SelectionEnd.Column++;
+ data.Caret.PreserveSelection = true;
+ data.Caret.Column++;
+ data.Caret.PreserveSelection = false;
+ }
+ data.Document.EndAtomicUndo ();
+ data.Document.RequestUpdate (new MultipleLineUpdate
(startLineNr, endLineNr));
+ data.Document.CommitDocumentUpdate ();
+ }
+
public override void Run (TextEditorData data)
{
if (data.IsSomethingSelected &&
data.SelectionStart.Segment != data.SelectionEnd.Segment) {
- int startLineNr =
data.Document.Splitter.GetLineNumberForOffset (data.SelectionRange.Offset);
- int endLineNr =
data.Document.Splitter.GetLineNumberForOffset (data.SelectionRange.EndOffset);
- data.Document.BeginAtomicUndo ();
- foreach (LineSegment line in
data.SelectedLines) {
- data.Document.Buffer.Insert
(line.Offset, new StringBuilder(TextEditorOptions.Options.IndentationString));
- }
- data.SelectionStart.Column++;
- if (data.SelectionEnd.Column != 0) {
- data.SelectionEnd.Column++;
- data.Caret.PreserveSelection = true;
- data.Caret.Column++;
- data.Caret.PreserveSelection = false;
- }
- data.Document.EndAtomicUndo ();
- data.Document.RequestUpdate (new
MultipleLineUpdate (startLineNr, endLineNr));
- data.Document.CommitDocumentUpdate ();
+ IndentSelection (data);
return;
}
Modified:
trunk/monodevelop/main/src/addins/Mono.Texteditor/Mono.TextEditor/TextEditorData.cs
===================================================================
---
trunk/monodevelop/main/src/addins/Mono.Texteditor/Mono.TextEditor/TextEditorData.cs
2008-02-03 14:13:22 UTC (rev 94689)
+++
trunk/monodevelop/main/src/addins/Mono.Texteditor/Mono.TextEditor/TextEditorData.cs
2008-02-03 14:30:34 UTC (rev 94690)
@@ -126,16 +126,20 @@
public IEnumerable<LineSegment> SelectedLines {
get {
- int startLineNr =
Document.Splitter.GetLineNumberForOffset (SelectionRange.Offset);
-
RedBlackTree<LineSegmentTree.TreeNode>.RedBlackTreeIterator iter =
this.document.Splitter.Get (startLineNr).Iter;
- do {
- if (iter.Current ==
Document.Splitter.GetByOffset (SelectionRange.EndOffset) &&
(iter.Current.Offset == Caret.Offset ||
-
iter.Current.Offset == SelectionRange.EndOffset))
- break;
- yield return iter.Current;
- if (iter.Current ==
Document.Splitter.GetByOffset (SelectionRange.EndOffset))
- break;
- } while (iter.MoveNext ());
+ if (!this.IsSomethingSelected) {
+ yield return this.document.GetLine
(this.caret.Line);
+ } else {
+ int startLineNr =
Document.Splitter.GetLineNumberForOffset (SelectionRange.Offset);
+
RedBlackTree<LineSegmentTree.TreeNode>.RedBlackTreeIterator iter =
this.document.Splitter.Get (startLineNr).Iter;
+ do {
+ if (iter.Current ==
Document.Splitter.GetByOffset (SelectionRange.EndOffset) &&
(iter.Current.Offset == Caret.Offset ||
+
iter.Current.Offset ==
SelectionRange.EndOffset))
+ break;
+ yield return iter.Current;
+ if (iter.Current ==
Document.Splitter.GetByOffset (SelectionRange.EndOffset))
+ break;
+ } while (iter.MoveNext ());
+ }
}
}
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches