public override IEnumerable <CompletionInfo> GetCompletions(IDjangoCompletionContext context, int position) { // If no argument, show urls if (Args.Length == 0) { return(GetUrlCompletion(context)); } BlockClassification?argBeforePosition = GetArgBeforePosition(position); BlockClassification?argPenultimateBeforePosition = GetPenultimateArgBeforePosition(position); if (argBeforePosition == null) { return(GetUrlCompletion(context)); } // No completion for the url variable name after the 'as' keyword if (IsAfterAsKeyword(argBeforePosition, argPenultimateBeforePosition)) { return(Enumerable.Empty <CompletionInfo>()); } DjangoUrl url = FindCurrentDjangoUrl(context); // Too many parameters are already in the statement if (_nbDefinedParameters >= url.Parameters.Count) { return(new[] { new CompletionInfo("as", StandardGlyphGroup.GlyphKeyword), }); } // Completion proposes unused named parameters, template variables and the 'as' keyword return(Enumerable.Concat( Enumerable.Concat( GetUnusedNamedParameters(url), base.GetCompletions(context, position) ), new[] { new CompletionInfo("as", StandardGlyphGroup.GlyphKeyword) } )); }
private IEnumerable <CompletionInfo> GetUnusedNamedParameters(DjangoUrl url) { if (url == null) { return(Enumerable.Empty <CompletionInfo>()); } IList <string> undefinedNamedParameters = new List <string>(); foreach (DjangoUrlParameter urlParam in url.NamedParameters) { if (!_definedNamedParameters.Contains(urlParam.Name)) { undefinedNamedParameters.Add(urlParam.Name); } } return(CompletionInfo.ToCompletionInfo(undefinedNamedParameters.Select(p => p += '='), StandardGlyphGroup.GlyphGroupField)); }
private IEnumerable<CompletionInfo> GetUnusedNamedParameters(DjangoUrl url) { if (url == null) { return Enumerable.Empty<CompletionInfo>(); } IList<string> undefinedNamedParameters = new List<string>(); foreach (DjangoUrlParameter urlParam in url.NamedParameters) { if (!_definedNamedParameters.Contains(urlParam.Name)) { undefinedNamedParameters.Add(urlParam.Name); } } return CompletionInfo.ToCompletionInfo(undefinedNamedParameters.Select(p => p += '='), StandardGlyphGroup.GlyphGroupField); }