public void Run(EnvDTE80.DTE2 DTE, Microsoft.VisualStudio.Shell.Package package) { EnvDTE.TextSelection ts = DTE.ActiveWindow.Selection as EnvDTE.TextSelection; if (ts == null) { throw new Exception("No Selection"); } EnvDTE.CodeParameter codeParam = ts.ActivePoint.CodeElement[vsCMElement.vsCMElementParameter] as EnvDTE.CodeParameter; if (codeParam == null) { throw new Exception("Not Parameter"); } System.Type tClass = GetTypeByName(DTE, package, codeParam.Type.AsFullName); string properties = ""; foreach (var p in tClass.GetProperties()) { properties += codeParam.Name + "." + p.Name + System.Environment.NewLine; } // Move into the method and dump the properties there ts.LineDown(); ts.LineDown(); ts.StartOfLine(); ts.Insert(properties); }
/// <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); } }
/// <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); } }