protected internal override void VisitAttributeName(AttributeName node) { base.VisitAttributeName(node); if (node.Span.Start <= this.position && this.position <= node.Span.End) { Debug.Assert(this.currentDirective != null, "currentDirective"); var directiveDescriptor = DirectiveDescriptor.GetDirectiveDescriptor(this.currentDirective.GetType()); var completions = new List <Completion>(); foreach (AttributeDescriptor attribute in directiveDescriptor.Attributes.Values) { if (!this.currentDirective.Attributes.ContainsKey(attribute.DisplayName)) { completions.Add(CreateAttributeCompletion(attribute)); } } if (completions.Count > 0) { this.Completions = completions; this.Node = node; } } }
protected internal override void VisitAttributeValue(AttributeValue node) { base.VisitAttributeValue(node); if (node.Span.Start <= this.position && this.position <= node.Span.End) { Debug.Assert(this.currentDirective != null, "currentDirective"); Debug.Assert(this.currentAttribute != null, "currentAttribute"); DirectiveDescriptor directiveDescriptor = DirectiveDescriptor.GetDirectiveDescriptor(this.currentDirective.GetType()); AttributeDescriptor attributeDescriptor; if (directiveDescriptor.Attributes.TryGetValue(this.currentAttribute.Name, out attributeDescriptor)) { this.Completions = new List <Completion>(attributeDescriptor.Values.Values.Select(CreateAttributeValueCompletion)); this.Node = node; } } }