public static string GetPreviousWordAtIndex(this ITextDocument document, int index) { var lastWordIndex = TextUtilities.GetNextCaretPosition(document, index, LogicalDirection.Backward, CaretPositioningMode.WordBorder); if (lastWordIndex >= 0 && document.GetLocation(lastWordIndex).Line == document.GetLocation(index).Line) { return(document.GetWordAtIndex(lastWordIndex)); } else { return(document.GetWordAtIndex(index)); } }
private void OpenBracket(IEditor editor, ITextDocument document, string text) { if (text[0].IsOpenBracketChar() && editor.CaretOffset <= document.TextLength && editor.CaretOffset > 0) { var nextChar = ' '; if (editor.CaretOffset != document.TextLength) { nextChar = document.GetCharAt(editor.CaretOffset); } var location = document.GetLocation(editor.CaretOffset); if (char.IsWhiteSpace(nextChar) || nextChar.IsCloseBracketChar()) { if (text[0] == '{') { var offset = editor.CaretOffset; document.Insert(editor.CaretOffset, " " + text[0].GetCloseBracketChar().ToString() + " "); if (IndentationStrategy != null) { editor.IndentLine(editor.Line); } editor.CaretOffset = offset + 1; } else { var offset = editor.CaretOffset; document.Insert(editor.CaretOffset, text[0].GetCloseBracketChar().ToString()); editor.CaretOffset = offset; } } } }