/// <summary> /// This function is the callback used to execute the command when the menu item is clicked. /// See the constructor to see how the menu item is associated with this function using /// OleMenuCommandService service and MenuCommand class. /// </summary> /// <param name="sender">Event sender.</param> /// <param name="e">Event args.</param> private void MenuItemCallback(object sender, EventArgs e) { DTE2 dte = GetDTE(); try { Document activeDoc = dte.ActiveDocument; if (activeDoc != null && activeDoc.ProjectItem != null && activeDoc.ProjectItem.ContainingProject != null) { TextDocument objTextDoc = activeDoc.Object("TextDocument") as TextDocument; EditPoint2 startPoint = objTextDoc.StartPoint.CreateEditPoint() as EditPoint2; EditPoint2 endPoint = objTextDoc.EndPoint.CreateEditPoint() as EditPoint2; string wholeWindowText = startPoint.GetText(endPoint); wholeWindowText = Regex.Replace(wholeWindowText, @"^\s+${2,}", string.Empty, RegexOptions.Multiline); wholeWindowText = Regex.Replace(wholeWindowText, @"\r\n\n\s*\}\r\n\s*$", "\r\n}\r\n", RegexOptions.Multiline); wholeWindowText = Regex.Replace(wholeWindowText, @"\r\n\n\s*\}", "\r\n}", RegexOptions.Multiline); wholeWindowText = Regex.Replace(wholeWindowText, @"\{\r\n\n", "{\r\n", RegexOptions.Multiline); startPoint.ReplaceText(endPoint, wholeWindowText, 3); startPoint.SmartFormat(endPoint); dte.ActiveDocument.Activate(); dte.ExecuteCommand("Edit.FormatDocument"); dte.ExecuteCommand("Edit.SortUsings"); } } catch (Exception ex) { System.Diagnostics.Debug.Write(ex); } }
public static void GeneratePropertyFromVariable(CodeVariable2 variable, bool generateGetter, bool generateSetter, bool generateComments) { CodeClass2 codeClass = variable.Collection.Parent as CodeClass2; CodeGenerator codeGenerator = CreateCodeGenerator(codeClass.Language); string propertyName = ConvertVariableNameToPropertyName(variable.Name); if (!ContainsMember(codeClass, propertyName)) { string getterName = String.Empty; string setterName = String.Empty; if (generateGetter) { getterName = propertyName; } if (generateSetter) { setterName = propertyName; } CodeProperty property = (CodeProperty)codeClass.AddProperty(getterName, setterName, variable.Type, -1, vsCMAccess.vsCMAccessPublic, null); if (generateComments) { StringBuilder sb = new StringBuilder(); sb.AppendLine("<doc>"); sb.AppendLine("<summary>"); sb.AppendLine(); sb.AppendLine("</summary>"); sb.Append("</doc>"); property.DocComment = sb.ToString(); } if (generateGetter) { EditPoint2 editPoint = (EditPoint2)property.Getter.GetStartPoint(vsCMPart.vsCMPartBody).CreateEditPoint(); editPoint.EndOfLine(); int position = editPoint.LineCharOffset; editPoint.StartOfLine(); editPoint.Delete(position); editPoint.Insert(codeGenerator.GenerateReturnStatement(variable.Name)); editPoint.SmartFormat(editPoint); } if (generateSetter) { EditPoint2 editPoint = (EditPoint2)property.Setter.GetStartPoint(vsCMPart.vsCMPartBody).CreateEditPoint(); editPoint.Insert(codeGenerator.GenerateAssignStatement(variable.Name, "value")); editPoint.SmartFormat(editPoint); } } }
public static void GenerateConstructor(CodeClass2 codeClass, CodeVariable2[] codeVariables, bool generateComments, vsCMAccess accessModifier) { CodeGenerator codeGenerator = CreateCodeGenerator(codeClass.Language); CodeFunction2 codeFunction = null; if (codeClass.Language == CodeModelLanguageConstants.vsCMLanguageCSharp) { codeFunction = (CodeFunction2)codeClass.AddFunction(codeClass.Name, vsCMFunction.vsCMFunctionConstructor, null, -1, accessModifier, null); } else if (codeClass.Language == CodeModelLanguageConstants.vsCMLanguageVB) { codeFunction = (CodeFunction2)codeClass.AddFunction("New", vsCMFunction.vsCMFunctionSub, vsCMTypeRef.vsCMTypeRefVoid, -1, accessModifier, null); } if (generateComments) { StringBuilder sb = new StringBuilder(); sb.AppendLine("<doc>"); sb.AppendLine("<summary>"); sb.AppendLine("</summary>"); foreach (CodeVariable2 codeVariable in codeVariables) { sb.AppendLine(String.Format("<param name=\"{0}\"></param>", codeVariable.Name)); } sb.Append("</doc>"); codeFunction.DocComment = sb.ToString(); } foreach (CodeVariable2 codeVariable in codeVariables) { codeFunction.AddParameter(codeVariable.Name, codeVariable.Type.AsString, -1); } EditPoint2 editPoint = (EditPoint2)codeFunction.GetStartPoint(vsCMPart.vsCMPartBody).CreateEditPoint(); foreach (CodeVariable2 codeVariable in codeVariables) { editPoint.Insert(codeGenerator.GenerateAssignStatement(codeVariable.Name, codeVariable.Name)); editPoint.SmartFormat(editPoint); if (Array.IndexOf(codeVariables, codeVariable) < codeVariables.Length - 1) { editPoint.InsertNewLine(1); } } editPoint.TryToShow(vsPaneShowHow.vsPaneShowCentered, codeFunction.StartPoint); }
/// <summary> /// This function is the callback used to execute the command when the menu item is clicked. /// See the constructor to see how the menu item is associated with this function using /// OleMenuCommandService service and MenuCommand class. /// </summary> /// <param name="sender">Event sender.</param> /// <param name="e">Event args.</param> private void Execute(object sender, EventArgs e) { ThreadHelper.ThrowIfNotOnUIThread(); string message = string.Format(CultureInfo.CurrentCulture, "Inside {0}.MenuItemCallback()", this.GetType().FullName); string title = "DeleteBlankLine"; // Show a message box to prove we were here VsShellUtilities.ShowMessageBox( this.package, message, title, OLEMSGICON.OLEMSGICON_INFO, OLEMSGBUTTON.OLEMSGBUTTON_OK, OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST); DTE2 dte = GetDTE(); try { Document activeDoc = dte.ActiveDocument; if (activeDoc != null && activeDoc.ProjectItem != null && activeDoc.ProjectItem.ContainingProject != null) { TextDocument objTextDoc = activeDoc.Object("TextDocument") as TextDocument; EditPoint2 startPoint = objTextDoc.StartPoint.CreateEditPoint() as EditPoint2; EditPoint2 endPoint = objTextDoc.EndPoint.CreateEditPoint() as EditPoint2; string wholeWindowText = startPoint.GetText(endPoint); wholeWindowText = Regex.Replace(wholeWindowText, @"^\s+${2,}", string.Empty, RegexOptions.Multiline); wholeWindowText = Regex.Replace(wholeWindowText, @"\r\n\n\s*\}\r\n\s*$", "\r\n}\r\n", RegexOptions.Multiline); wholeWindowText = Regex.Replace(wholeWindowText, @"\r\n\n\s*\}", "\r\n}", RegexOptions.Multiline); wholeWindowText = Regex.Replace(wholeWindowText, @"\{\r\n\n", "{\r\n", RegexOptions.Multiline); startPoint.ReplaceText(endPoint, wholeWindowText, 3); startPoint.SmartFormat(endPoint); dte.ActiveDocument.Activate(); dte.ExecuteCommand("Edit.FormatDocument"); dte.ExecuteCommand("Edit.SortUsings"); } } catch (Exception ex) { System.Diagnostics.Debug.Write(ex); } }