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

Reply via email to