public static void Select(TextEditorData data, Action <TextEditorData> caretMoveAction)
{
using (var undoGroup = data.OpenUndoGroup()) {
PositionChangedHandler handler = new PositionChangedHandler(data);
data.Caret.PositionChanged += handler.DataCaretPositionChanged;
StartSelection(data);
caretMoveAction(data);
data.Caret.PositionChanged -= handler.DataCaretPositionChanged;
data.Caret.AutoScrollToCaret = true;
data.Caret.PreserveSelection = false;
data.ScrollToCaret();
}
}