public string GetWordAtIndex(int index)
{
var result = string.Empty;
if (index >= 0 && TextDocument.TextLength > index)
{
var start = index;
var currentChar = TextDocument.GetCharAt(index);
var prevChar = '\0';
if (index > 0)
{
prevChar = TextDocument.GetCharAt(index - 1);
}
var charClass = TextUtilities.GetCharacterClass(currentChar);
if (charClass != TextUtilities.CharacterClass.LineTerminator && prevChar != ' ' &&
TextUtilities.GetCharacterClass(prevChar) != TextUtilities.CharacterClass.LineTerminator)
{
start = TextUtilities.GetNextCaretPosition(TextDocument, index, TextUtilities.LogicalDirection.Backward,
TextUtilities.CaretPositioningMode.WordStart);
}
var end = TextUtilities.GetNextCaretPosition(TextDocument, start, TextUtilities.LogicalDirection.Forward,
TextUtilities.CaretPositioningMode.WordBorder);
if (start != -1 && end != -1)
{
var word = TextDocument.GetText(start, end - start).Trim();
if (TextUtilities.IsSymbol(word))
{
result = word;
}
}
}
return result;
}