/// <summary> /// Gets the items. /// </summary> /// <param name="parameters"> /// The parameters. /// </param> /// <returns> /// The items. /// </returns> public IEnumerable<LiveTemplateItem> GetItems(SmartGenerateParameters parameters) { var element = parameters.Element; var classLikeDeclaration = element.GetContainingElement(typeof(IClassLikeDeclaration), true); if (classLikeDeclaration != null) { return null; } var enumDecl = element.GetContainingElement(typeof(IEnumDeclaration), true) as IEnumDeclaration; if (enumDecl != null) { return null; } var namespaceDeclaration = element.GetContainingElement(typeof(INamespaceDeclaration), true); if (namespaceDeclaration == null) { return null; } var liveTemplateItem = new LiveTemplateItem { MenuText = "Type", Description = "Type", Shortcut = "Type" }; return new List<LiveTemplateItem> { liveTemplateItem }; }
/// <summary> /// Gets the items. /// </summary> /// <param name="parameters"> /// The parameters. /// </param> /// <returns> /// The items. /// </returns> public IEnumerable<LiveTemplateItem> GetItems(SmartGenerateParameters parameters) { var element = parameters.Element; var interfaceDeclaration = element.GetContainingElement(typeof(IInterfaceDeclaration), true); if (interfaceDeclaration == null) { return null; } var memberDeclaration = element.GetContainingElement(typeof(ITypeMemberDeclaration), true); if (memberDeclaration != null && !(memberDeclaration is IInterfaceDeclaration)) { return null; } var liveTemplateItem = new LiveTemplateItem { MenuText = "Interface member", Description = "Interface member", Shortcut = "Interface member" }; return new List<LiveTemplateItem> { liveTemplateItem }; }
/// <summary>Gets the items.</summary> /// <param name="parameters">The parameters.</param> /// <returns>The items.</returns> public IEnumerable<LiveTemplateItem> GetItems(SmartGenerateParameters parameters) { var element = parameters.Element; var structDeclaration = element.GetContainingElement(typeof(IStructDeclaration), true) as IStructDeclaration; if (structDeclaration == null) { return null; } var memberDeclaration = element.GetContainingElement(typeof(IClassMemberDeclaration), true); if (memberDeclaration != null && !(memberDeclaration is IStructDeclaration)) { return null; } var modifier = ModifierUtil.GetModifier(element, structDeclaration); var liveTemplateItem = new LiveTemplateItem { MenuText = "Struct member", Description = "Struct member", Shortcut = "Struct member", Text = string.Format("/* @Modifier */\n") }; liveTemplateItem.Variables["Modifier"] = modifier; return new List<LiveTemplateItem> { liveTemplateItem }; }
/// <summary>Gets the name of the template.</summary> /// <param name="parameters">The parameters.</param> /// <returns>The items.</returns> public IEnumerable<LiveTemplateItem> GetItems(SmartGenerateParameters parameters) { var element = parameters.Element; var previousStatement = parameters.PreviousStatement; var declarationStatement = previousStatement as IDeclarationStatement; if (declarationStatement == null) { return null; } var localVariableDeclarations = declarationStatement.VariableDeclarations; if (localVariableDeclarations == null || localVariableDeclarations.Count != 1) { return null; } var localVariableDeclaration = localVariableDeclarations[0]; if (localVariableDeclaration == null) { return null; } var value = localVariableDeclaration.Initial.GetText(); var localVariable = localVariableDeclaration as ILocalVariable; if (localVariable == null) { return null; } var type = localVariable.Type; var presentableName = type.GetPresentableName(element.Language); var longPresentableName = type.GetLongPresentableName(element.Language); var shortName = localVariable.ShortName; var liveTemplateItem = new LiveTemplateItem { MenuText = string.Format("After local variable declaration of type '{0}'", presentableName), Description = string.Format("After local variable of type '{0}'", presentableName), Shortcut = string.Format("After local variable of type {0}", longPresentableName), Text = string.Format("/* @VariableName, @VariableType, @Value */\n") }; liveTemplateItem.Variables["VariableName"] = shortName; liveTemplateItem.Variables["VariableType"] = presentableName; liveTemplateItem.Variables["Value"] = value; return new List<LiveTemplateItem> { liveTemplateItem }; }
/// <summary>Gets the items.</summary> /// <param name="parameters">The parameters.</param> /// <returns>The items.</returns> public IEnumerable<LiveTemplateItem> GetItems(SmartGenerateParameters parameters) { var element = parameters.Element; var methodDeclaration = element.GetContainingElement(typeof(IMethodDeclaration), true) as IMethodDeclaration; if (methodDeclaration == null) { return null; } var body = methodDeclaration.Body; if (body == null || body.Statements.Count > 0) { return null; } var name = methodDeclaration.DeclaredName; if (string.IsNullOrEmpty(name)) { return null; } var method = methodDeclaration.DeclaredElement; if (method == null) { return null; } var returnType = method.ReturnType; var returnTypeName = returnType.GetPresentableName(element.Language); if (returnTypeName == "void" || string.IsNullOrEmpty(returnTypeName)) { return null; } var liveTemplateItem = new LiveTemplateItem { MenuText = string.Format("Body in method that returns '{0}'", returnTypeName), Description = string.Format("Body in method that returns '{0}'", returnTypeName), Shortcut = string.Format("Body in method that returns '{0}'", returnTypeName) }; return new List<LiveTemplateItem> { liveTemplateItem }; }
/// <summary>Gets the name of the template.</summary> /// <param name="smartGenerateParameters">The smart generate parameters.</param> /// <returns>The items.</returns> public IEnumerable<LiveTemplateItem> GetItems(SmartGenerateParameters smartGenerateParameters) { var element = smartGenerateParameters.Element; var block = element.GetContainingElement(typeof(IBlock), true) as IBlock; if (block == null) { return null; } var methodDeclaration = element.GetContainingElement(typeof(IMethodDeclaration), true) as IMethodDeclaration; if (methodDeclaration == null) { return null; } if (block != methodDeclaration.Body) { return null; } if (block.Statements.Count > 0) { var statement = block.Statements[0]; var statementRange = statement.GetDocumentRange(); var statementStart = statementRange.TextRange.StartOffset; if (element.GetTreeTextRange().StartOffset.Offset > statementStart) { return null; } } var liveTemplateItem = new LiveTemplateItem { MenuText = "At the start of a method", Description = "At the start of a method", Shortcut = "At the start of a method" }; return new List<LiveTemplateItem> { liveTemplateItem }; }
/// <summary>Gets the name of the template.</summary> /// <param name="smartGenerateParameters">The smart generate parameters.</param> /// <returns>The items.</returns> public IEnumerable<LiveTemplateItem> GetItems(SmartGenerateParameters smartGenerateParameters) { var element = smartGenerateParameters.Element; if (!StatementUtil.IsBeforeFirstStatement(element)) { return null; } var liveTemplateItem = new LiveTemplateItem { MenuText = "At the start of a block", Description = "At the start of a block", Shortcut = "At the start of a block" }; return new List<LiveTemplateItem> { liveTemplateItem }; }
/// <summary> /// Gets the name of the template. /// </summary> /// <param name="parameters"> /// The parameters. /// </param> /// <returns> /// The items. /// </returns> public IEnumerable<LiveTemplateItem> GetItems(SmartGenerateParameters parameters) { var previousStatement = parameters.PreviousStatement; var expressionStatement = previousStatement as IExpressionStatement; if (expressionStatement == null) { return null; } var invocationExpression = expressionStatement.Expression as IInvocationExpression; if (invocationExpression == null) { return null; } var invokedExpression = invocationExpression.InvokedExpression as IReferenceExpression; if (invokedExpression == null) { return null; } var resolveResult = invokedExpression.Reference.Resolve(); IMethod method = null; var methodDeclaration = resolveResult.DeclaredElement as IMethodDeclaration; if (methodDeclaration != null) { method = methodDeclaration.DeclaredElement; } if (method == null) { method = resolveResult.DeclaredElement as IMethod; } if (method == null) { return null; } var text = method.ShortName; var shortcut = method.ShortName; var containingType = method.GetContainingType(); if (containingType != null) { text = containingType.ShortName + "." + text; shortcut = containingType.ShortName + "." + shortcut; var ns = containingType.GetContainingNamespace(); if (!string.IsNullOrEmpty(ns.ShortName)) { shortcut = ns.ShortName + "." + shortcut; } } var liveTemplateItem = new LiveTemplateItem { MenuText = string.Format("After call to '{0}'", text), Description = string.Format("After call to '{0}'", text), Shortcut = string.Format("After call to {0}", shortcut) }; liveTemplateItem.Variables["Name"] = method.ShortName; liveTemplateItem.Variables["Type"] = containingType != null ? containingType.ShortName : string.Empty; return new List<LiveTemplateItem> { liveTemplateItem }; }
/// <summary>Gets the name of the template.</summary> /// <param name="parameters">The parameters.</param> /// <returns>The items.</returns> public IEnumerable<LiveTemplateItem> GetItems(SmartGenerateParameters parameters) { var previousStatement = parameters.PreviousStatement; var expressionStatement = previousStatement as IExpressionStatement; if (expressionStatement == null) { return null; } var invocationExpression = expressionStatement.Expression as IInvocationExpression; if (invocationExpression == null) { return null; } var invokedExpression = invocationExpression.InvokedExpression as IReferenceExpression; if (invokedExpression == null) { return null; } var resolveResult = invokedExpression.Reference.Resolve(); IMethod method = null; var methodDeclaration = resolveResult.DeclaredElement as IMethodDeclaration; if (methodDeclaration != null) { method = methodDeclaration.DeclaredElement; } if (method == null) { method = resolveResult.DeclaredElement as IMethod; } if (method == null) { return null; } var expression = string.Empty; var qualifierExpression = invokedExpression.QualifierExpression; if (qualifierExpression != null) { expression = qualifierExpression.GetText(); } var shortName = method.ShortName; var type = string.Empty; var text = shortName; var shortcut = shortName; var containingType = method.GetContainingType(); if (containingType != null) { text = containingType.ShortName + "." + text; shortcut = containingType.ShortName + "." + shortcut; type = containingType.ShortName; var ns = containingType.GetContainingNamespace(); if (!string.IsNullOrEmpty(ns.ShortName)) { shortcut = ns.ShortName + "." + shortcut; } } var liveTemplateItem = new LiveTemplateItem { MenuText = string.Format("After call to '{0}'", text), Description = string.Format("After call to '{0}'", text), Shortcut = string.Format("After call to {0}", shortcut), Text = string.Format("/* @Qualifier, @MethodName, @ContainingType, @Arg0... */\n") }; liveTemplateItem.Variables["MethodName"] = shortName; liveTemplateItem.Variables["ContainingType"] = type; liveTemplateItem.Variables["Qualifier"] = expression; var arguments = invocationExpression.Arguments; if (arguments != null) { var count = 0; foreach (var argument in arguments) { liveTemplateItem.Variables["Arg" + count] = argument.GetText(); count++; } } return new List<LiveTemplateItem> { liveTemplateItem }; }