public static void DuplicateLine(TextEditorData data)
{
using (var undoGroup = data.OpenUndoGroup()) {
if (data.IsSomethingSelected)
{
var selectedText = data.SelectedText;
data.ClearSelection();
data.InsertAtCaret(selectedText);
}
else
{
DocumentLine line = data.Document.GetLine(data.Caret.Line);
if (line == null)
{
return;
}
if (line.DelimiterLength == 0)
{
data.Insert(line.Offset, data.GetTextAt(line.SegmentIncludingDelimiter) + data.EolMarker);
}
else
{
data.Insert(line.Offset, data.GetTextAt(line.SegmentIncludingDelimiter));
}
}
}
}