protected override bool AddLookupItems()

in Backend/Core/ForTea.Core/Services/CodeCompletion/DirectiveAttributeNameItemsProvider.cs [34:62]


    protected override bool AddLookupItems(T4CodeCompletionContext context, IItemsCollector collector)
    {
      ITreeNode node = context.BasicContext.File.FindNodeAt(context.BasicContext.SelectedTreeRange);
      Assertion.AssertNotNull(node, "node == null");
      var ranges = context.BasicContext.GetRanges(node);

      var directive = node.GetContainingNode<IT4Directive>();
      Assertion.AssertNotNull(directive, "directive != null");
      DirectiveInfo directiveInfo = T4DirectiveInfoManager.GetDirectiveByName(directive.Name.GetText());
      if (directiveInfo == null)
        return false;

      JetHashSet<string> existingNames = directive
        .Attributes
        .Select(attr => attr.Name.GetText())
        .ToJetHashSet(s => s, StringComparer.OrdinalIgnoreCase);

      foreach (string attributeName in directiveInfo.SupportedAttributes.Select(attr => attr.Name))
      {
        if (existingNames.Contains(attributeName))
          continue;

        var item = new TextLookupItem(attributeName);
        item.InitializeRanges(ranges, context.BasicContext);
        collector.Add(item);
      }

      return true;
    }