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