private void MoveCaretToPrevWord(bool Select)
{
int x = Caret.Position.X;
int y = Caret.Position.Y;
int StartType;
bool found = false;
if (x == Caret.CurrentRow.Text.Length)
{
StartType = 1;
x = Caret.CurrentRow.Text.Length - 1;
}
else
{
string StartChar = Document[y].Text.Substring(Caret.Position.X, 1);
StartType = CharType(StartChar);
}
while (y >= 0)
{
while (x >= 0 && x < Document[y].Text.Length)
{
string Char = Document[y].Text.Substring(x, 1);
int Type = CharType(Char);
if (Type != StartType)
{
found = true;
while (x > 0)
{
string Char2 = Document[y].Text.Substring(x, 1);
int Type2 = CharType(Char2);
if (Type2 != Type)
{
x++;
break;
}
x--;
}
break;
}
x--;
}
if (found)
break;
if (y == 0)
{
x = 0;
break;
}
y--;
x = Document[y].Text.Length - 1;
}
Caret.SetPos(new TextPoint(x, y));
if (!Select)
Selection.ClearSelection();
if (Select)
{
Selection.MakeSelection();
}
ScrollIntoView();
}