private bool SelectLines() { EnvDTE.TextSelection ts = _dte.ActiveWindow.Selection as EnvDTE.TextSelection; if (ts.IsEmpty) { ts.SelectLine(); return(true); } else { int startLine = ts.AnchorPoint.Line; int endLine = ts.ActivePoint.Line; if (endLine < startLine) { int temp = startLine; startLine = endLine; endLine = temp; ts.SwapAnchor(); } ts.EndOfLine(true); int endChar = ts.ActivePoint.LineCharOffset; ts.GotoLine(startLine, true); ts.MoveToLineAndOffset(endLine, endChar, true); return(false); } }
/// <summary> /// Sorts the text within the specified text selection. /// </summary> /// <param name="textSelection">The text selection.</param> private void SortText(TextSelection textSelection) { // If the selection has no length, try to pick up the next line. if (textSelection.IsEmpty) { textSelection.LineDown(true); textSelection.EndOfLine(true); } // Start of selection should always be at the beginning of the line. var start = textSelection.TopPoint.CreateEditPoint(); start.StartOfLine(); // End of selection should always be at the start of the following line (i.e. extend past the last line's newline character). var end = textSelection.BottomPoint.CreateEditPoint(); if (!end.AtStartOfLine) { end.EndOfLine(); end.CharRight(); } // Capture the selected text. var selectedText = start.GetText(end); // Create the sorted text lines. var splitText = selectedText.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); var orderedText = splitText.OrderBy(x => x); var sb = new StringBuilder(); foreach (var line in orderedText) { sb.AppendLine(line); } var sortedText = sb.ToString(); // If the selected and sorted text do not match, delete and insert the replacement. if (!selectedText.Equals(sortedText, StringComparison.CurrentCulture)) { start.Delete(end); var insertCursor = start.CreateEditPoint(); insertCursor.Insert(sortedText); textSelection.MoveToPoint(start, false); textSelection.MoveToPoint(insertCursor, true); } }
static public void MoveToLindEnd() { var dte = Package.GetGlobalService(typeof(DTE)) as DTE2; if (dte != null) { var document = dte.ActiveDocument; if (document == null) { return; } EnvDTE.TextSelection ts = document.Selection as EnvDTE.TextSelection; ts.EndOfLine(); } }
/// <summary> /// Sorts the text within the specified text selection. /// </summary> /// <param name="textSelection">The text selection.</param> private void SortText(TextSelection textSelection) { // If the selection has no length, try to pick up the next line. if (textSelection.IsEmpty) { textSelection.LineDown(true); textSelection.EndOfLine(true); } // Capture the selected text lines. var start = textSelection.TopPoint.CreateEditPoint(); start.StartOfLine(); var end = textSelection.BottomPoint.CreateEditPoint(); end.EndOfLine(); end.CharRight(); var selectedText = start.GetText(end); // Create the sorted text lines. var splitText = selectedText.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); var orderedText = splitText.OrderBy(x => x); var sb = new StringBuilder(); foreach (var line in orderedText) { sb.AppendLine(line); } var sortedText = sb.ToString(); // If the selected and sorted text do not match, delete and insert the replacement. if (!selectedText.Equals(sortedText, StringComparison.CurrentCulture)) { start.Delete(end); start.Insert(sortedText); } }