public IHighlighting Run(IReference reference) { var resolveResult = reference.Resolve(); if (resolveResult.Result.Candidates.Count > 1) { var candidates = resolveResult.Result.Candidates; var result = new List <string>(); foreach (var candidate in candidates) { result.Add(Environment.NewLine + " " + DeclaredElementPresenter.Format(ShaderLabLanguage.Instance, ShaderLabDeclaredElementPresenterStyles.CANDIDATE_PRESENTER, candidate)); } result.Sort(); var message = result.AggregateString(""); var range = reference.GetDocumentRange(); return(new MultipleResolveCandidatesError(range, message, reference)); } return(null); }
public override DocumentRange CalculateRange() => Reference.GetDocumentRange();
protected virtual void HighlightReference(IElement element, IReference reference) { if (reference.ReferenceType == ReferenceType.TEXT || reference.ReferenceType == ReferenceType.REFERENCE_NAME || reference.ReferenceType == ReferenceType.LABEL) { ResolveResult resolveResult = reference.Resolve(); // TODO resolveResult.DeclaredElement == null property@name !!! if (resolveResult.DeclaredElement != null) { DocumentRange range = reference.GetDocumentRange(); DocumentRange footerRange = XMLPSIUtils.GetFooterTagRange(element, range); Highlight(range, resolveResult.DeclaredElement); if (footerRange != DocumentRange.InvalidRange) Highlight(footerRange, resolveResult.DeclaredElement); } } }
public DocumentRange CalculateRange() => myReference.GetDocumentRange();