Author: mkrueger
Date: 2008-02-18 12:57:46 -0500 (Mon, 18 Feb 2008)
New Revision: 96088

Modified:
   trunk/monodevelop/main/src/addins/Mono.Texteditor/ChangeLog
   
trunk/monodevelop/main/src/addins/Mono.Texteditor/Mono.TextEditor/DefaultEditActions.cs
Log:
* Mono.TextEditor/DefaultEditActions.cs: goto/delete next/prev word
  should now be the same as in gtksourceview.

Modified: trunk/monodevelop/main/src/addins/Mono.Texteditor/ChangeLog
===================================================================
--- trunk/monodevelop/main/src/addins/Mono.Texteditor/ChangeLog 2008-02-18 
17:56:33 UTC (rev 96087)
+++ trunk/monodevelop/main/src/addins/Mono.Texteditor/ChangeLog 2008-02-18 
17:57:46 UTC (rev 96088)
@@ -1,5 +1,10 @@
 2008-02-18  Mike Krüger <[EMAIL PROTECTED]> 
 
+       * Mono.TextEditor/DefaultEditActions.cs: goto/delete next/prev word 
should
+         now be the same as in gtksourceview.
+
+2008-02-18  Mike Krüger <[EMAIL PROTECTED]> 
+
        * Mono.TextEditor/Document.cs, Mono.TextEditor/TextEditor.cs: 
Implemented
          undo operation dispose
 

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-18 17:56:33 UTC (rev 96087)
+++ 
trunk/monodevelop/main/src/addins/Mono.Texteditor/Mono.TextEditor/DefaultEditActions.cs
     2008-02-18 17:57:46 UTC (rev 96088)
@@ -68,19 +68,31 @@
                        if (offset <= 0)
                                return 0;
                        int  result = offset - 1;
-                       bool isLetter = Char.IsLetterOrDigit 
(document.GetCharAt (result));
+                       while (result > 0 && !Char.IsLetterOrDigit 
(document.GetCharAt (result))) {
+                               result--;
+                       }
+                       bool isLetter = Char.IsLetter (document.GetCharAt 
(result));
+                       bool isDigit  = Char.IsDigit (document.GetCharAt 
(result));
                        while (result > 0) {
                                char ch = document.GetCharAt (result);
                                if (isLetter) {
-                                       if (Char.IsLetterOrDigit (ch)) 
+                                       if (Char.IsLetter (ch)) 
                                                result--;
                                        else {
                                                result++;
                                                break;
                                        }
+                               } else if (isDigit) {
+                                       if (Char.IsDigit (ch)) 
+                                               result--;
+                                       else {
+                                               result++;
+                                               break;
+                                       }
                                } else {
                                        if (Char.IsLetterOrDigit (ch)) {
-                                               return FindPrevWordOffset 
(document, result);
+                                               result++;
+                                               break;
                                        } else 
                                                result--;
                                }
@@ -101,11 +113,15 @@
        {
                public override void Run (TextEditorData data)
                {
+                       int oldLine = data.Caret.Line;
                        int offset = CaretMovePrevWord.FindPrevWordOffset 
(data.Document, data.Caret.Offset);
                        if (data.Caret.Offset != offset) {
                                data.Document.Remove (offset, data.Caret.Offset 
- offset);
                                data.Caret.Offset = offset;
                        }
+                       if (oldLine != data.Caret.Line)
+                               data.Document.CommitLineToEndUpdate 
(data.Caret.Line);
+                       
                }
        }
        
@@ -116,6 +132,7 @@
                        int offset = CaretMoveNextWord.FindNextWordOffset 
(data.Document, data.Caret.Offset);
                        if (data.Caret.Offset != offset) 
                                data.Document.Remove (data.Caret.Offset, offset 
- data.Caret.Offset);
+                       data.Document.CommitLineToEndUpdate (data.Caret.Line);
                }
        }
        
@@ -171,18 +188,29 @@
                        if (offset + 1 >= document.Length)
                                return document.Length;
                        int result = offset + 1;
-                       bool isLetter = Char.IsLetterOrDigit 
(document.GetCharAt (result));
+                       while (result < document.Length && 
!Char.IsLetterOrDigit (document.GetCharAt (result))) {
+                               result++;
+                       }
+                       
+                       bool isLetter = Char.IsLetter (document.GetCharAt 
(result));
+                       bool isDigit  = Char.IsDigit (document.GetCharAt 
(result));
                        while (result < document.Length) {
                                char ch = document.GetCharAt (result);
                                if (isLetter) {
-                                       if (Char.IsLetterOrDigit (ch)) 
+                                       if (Char.IsLetter (ch)) 
                                                result++;
                                        else {
                                                break;
                                        }
+                               } else if (isDigit) {
+                                       if (Char.IsDigit (ch)) 
+                                               result++;
+                                       else {
+                                               break;
+                                       }
                                } else {
                                        if (Char.IsLetterOrDigit (ch)) {
-                                               return FindNextWordOffset 
(document, result);
+                                               break;
                                        } else 
                                                result++;
                                }

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to