private IdentifierTooltipContent TryPresentColorized(PresentableNode presentableNode, [NotNull] IContextBoundSettingsStore settings) { ITreeNode node = presentableNode.Node; if (node == null) { return(null); } HighlighterIdProvider highlighterIdProvider = _highlighterIdProviderFactory.CreateProvider(settings); RichText identifierText = _colorizerPresenter.TryPresent( node, PresenterOptions.ForIdentifierToolTip(settings, true), node.Language, highlighterIdProvider); if (identifierText == null || identifierText.IsEmpty) { return(null); } var identifierContent = new IdentifierTooltipContent(identifierText, node.GetDocumentRange().TextRange); if (settings.GetValue((IdentifierTooltipSettings s) => s.ShowIcon)) { identifierContent.Icon = presentableNode.Icon; } return(identifierContent); }
private ArgumentRoleTooltipContent TryGetArgumentRoleContent([NotNull] ITreeNode node, [NotNull] IContextBoundSettingsStore settings) { if (!settings.GetValue((IdentifierTooltipSettings s) => s.ShowArgumentsRole)) { return(null); } var argument = node.GetContainingNode <IArgument>(); DeclaredElementInstance <IParameter> parameterInstance = argument?.MatchingParameter; if (parameterInstance == null) { return(null); } IParameter parameter = parameterInstance.Element; IParametersOwner parametersOwner = parameter.ContainingParametersOwner; if (parametersOwner == null) { return(null); } HighlighterIdProvider highlighterIdProvider = _highlighterIdProviderFactory.CreateProvider(settings); RichText final = new RichText("Argument of ", TextStyle.Default); final.Append(_colorizerPresenter.TryPresent( new DeclaredElementInstance(parametersOwner, parameterInstance.Substitution), PresenterOptions.ForArgumentRoleParametersOwnerToolTip(settings), argument.Language, highlighterIdProvider)); final.Append(": ", TextStyle.Default); final.Append(_colorizerPresenter.TryPresent( parameterInstance, PresenterOptions.ForArgumentRoleParameterToolTip(settings), argument.Language, highlighterIdProvider)); var content = new ArgumentRoleTooltipContent(final, argument.GetDocumentRange().TextRange) { Description = TryGetDescription(parameter, parameter.Module, argument.Language, DeclaredElementDescriptionStyle.NO_OBSOLETE_SUMMARY_STYLE) }; if (settings.GetValue((IdentifierTooltipSettings s) => s.ShowIcon)) { content.Icon = PsiSymbolsThemedIcons.Parameter.Id; } return(content); }
private void AddSuperTypes( [NotNull] IdentifierTooltipContent identifierContent, [NotNull] ITypeElement typeElement, BaseTypeDisplayKind baseTypeDisplayKind, ImplementedInterfacesDisplayKind implementedInterfacesDisplayKind, [NotNull] PsiLanguageType languageType, [NotNull] ITreeNode contextualNode, [NotNull] HighlighterIdProvider highlighterIdProvider, [NotNull] IContextBoundSettingsStore settings) { GetSuperTypes( typeElement, baseTypeDisplayKind, implementedInterfacesDisplayKind, out DeclaredElementInstance baseType, out IList <DeclaredElementInstance> implementedInterfaces); if (baseType == null && implementedInterfaces.Count == 0) { return; } PresenterOptions presenterOptions = PresenterOptions.ForBaseTypeOrImplementedInterfaceTooltip(settings); if (baseType != null) { identifierContent.BaseType = _colorizerPresenter.TryPresent(baseType, presenterOptions, languageType, highlighterIdProvider, contextualNode, out _); } if (implementedInterfaces.Count > 0) { var sortedPresentedInterfaces = new SortedDictionary <string, RichText>(StringComparer.Ordinal); foreach (DeclaredElementInstance implementedInterface in implementedInterfaces) { RichText richText = _colorizerPresenter.TryPresent(implementedInterface, presenterOptions, languageType, highlighterIdProvider, contextualNode, out _); if (richText != null) { sortedPresentedInterfaces[richText.ToString(false)] = richText; } } foreach (RichText richText in sortedPresentedInterfaces.Values) { identifierContent.ImplementedInterfaces.Add(richText); } } }
private void AddSuperTypes( [NotNull] IdentifierTooltipContent identifierContent, [NotNull] ITypeElement typeElement, bool showBaseType, bool showImplementedInterfaces, [NotNull] PsiLanguageType languageType, [NotNull] HighlighterIdProvider highlighterIdProvider) { DeclaredElementInstance baseType; IList <DeclaredElementInstance> implementedInterfaces; GetSuperTypes(typeElement, showBaseType, showImplementedInterfaces, out baseType, out implementedInterfaces); if (baseType != null) { identifierContent.BaseType = _colorizerPresenter.TryPresent(baseType, PresenterOptions.QualifiedMember, languageType, highlighterIdProvider); } if (implementedInterfaces.Count == 0) { return; } var sortedPresentedInterfaces = new SortedDictionary <string, RichText>(StringComparer.Ordinal); foreach (DeclaredElementInstance implementedInterface in implementedInterfaces) { RichText richText = _colorizerPresenter.TryPresent(implementedInterface, PresenterOptions.QualifiedMember, languageType, highlighterIdProvider); if (richText != null) { sortedPresentedInterfaces[richText.ToString(false)] = richText; } } foreach (RichText richText in sortedPresentedInterfaces.Values) { identifierContent.ImplementedInterfaces.Add(richText); } }
protected override RichText TryGetSignatureCore( PresenterOptions options, HighlighterIdProvider highlighterIdProvider, out TextRange[] parameterRanges, out int[] mapToOriginalOrder, out ExtensionMethodInfo extensionMethodInfo) { parameterRanges = EmptyArray <TextRange> .Instance; mapToOriginalOrder = EmptyArray <int> .Instance; extensionMethodInfo = ExtensionMethodInfo.NoExtension; ITypeParametersOwner typeElement = UnderlyingCandidate.TypeElement; var elementInstance = new DeclaredElementInstance(typeElement, typeElement.IdSubstitution); RichText richText = _colorizerPresenter.TryPresent(elementInstance, options, UnderlyingCandidate.Language, highlighterIdProvider, null, out PresentedInfo presentedInfo); if (richText == null) { return(null); } parameterRanges = presentedInfo.TypeParameters.ToArray(); return(richText); }
protected override RichText TryGetSignatureCore( PresenterOptions options, HighlighterIdProvider highlighterIdProvider, out TextRange[] parameterRanges, out int[] mapToOriginalOrder, out ExtensionMethodInfo extensionMethodInfo) { parameterRanges = EmptyArray <TextRange> .Instance; mapToOriginalOrder = EmptyArray <int> .Instance; extensionMethodInfo = ExtensionMethodInfo.NoExtension; InvocationCandidate invocationCandidate = UnderlyingCandidate.InvocationCandidate; var elementInstance = new DeclaredElementInstance(invocationCandidate.Element, invocationCandidate.Substitution); RichText richText = _colorizerPresenter.TryPresent(elementInstance, options, UnderlyingCandidate.Language, highlighterIdProvider, null, out PresentedInfo presentedInfo); if (richText == null) { return(null); } if (presentedInfo.Parameters.Count > 0) { if (presentedInfo.IsExtensionMethod && UnderlyingCandidate.InvocationCandidate.IsExtensionMethodInvocation) { parameterRanges = presentedInfo.Parameters.Skip(1).ToArray(); mapToOriginalOrder = CreateIdentityMap(presentedInfo.Parameters.Count - 1); extensionMethodInfo = new ExtensionMethodInfo(presentedInfo.Parameters[0], TextRange.InvalidRange); } else { parameterRanges = presentedInfo.Parameters.ToArray(); mapToOriginalOrder = CreateIdentityMap(presentedInfo.Parameters.Count); } } return(richText); }
private IdentifierTooltipContent TryPresentColorized([CanBeNull] DeclaredElementInfo info, [NotNull] IContextBoundSettingsStore settings) { if (info == null) { return(null); } PsiLanguageType languageType = info.TreeNode.Language; IDeclaredElement element = info.DeclaredElement; IPsiModule psiModule = info.TreeNode.GetPsiModule(); HighlighterIdProvider highlighterIdProvider = _highlighterIdProviderFactory.CreateProvider(settings); RichText identifierText; if (info.DeclaredElement is ICppDeclaredElement cppDeclaredElement) { identifierText = _solution.TryGetComponent <CppDeclaredElementTooltipProvider>()?.GetTooltip(cppDeclaredElement)?.RichText; } else { identifierText = _colorizerPresenter.TryPresent( new DeclaredElementInstance(element, info.Substitution), PresenterOptions.ForIdentifierToolTip(settings, !element.IsEnumMember()), languageType, highlighterIdProvider, info.TreeNode, out _); } if (identifierText == null || identifierText.IsEmpty) { return(null); } var identifierContent = new IdentifierTooltipContent(identifierText, info.SourceRange); if (settings.GetValue((IdentifierTooltipSettings s) => s.ShowIcon)) { identifierContent.Icon = TryGetIcon(element); } if (settings.GetValue((IdentifierTooltipSettings s) => s.ShowDocumentation)) { XmlNode xmlDoc = element.GetXMLDoc(true); identifierContent.Description = TryGetDescription(element, xmlDoc, psiModule, languageType); if (settings.GetValue((IdentifierTooltipSettings s) => s.ShowObsolete)) { identifierContent.Obsolete = TryRemoveObsoletePrefix(TryGetObsolete(element, psiModule, languageType)); } if (settings.GetValue((IdentifierTooltipSettings s) => s.ShowReturn)) { identifierContent.Return = TryPresentDocNode(xmlDoc, "returns", languageType, psiModule); } if (settings.GetValue((IdentifierTooltipSettings s) => s.ShowValue)) { identifierContent.Value = TryPresentDocNode(xmlDoc, "value", languageType, psiModule); } if (settings.GetValue((IdentifierTooltipSettings s) => s.ShowRemarks)) { identifierContent.Remarks = TryPresentDocNode(xmlDoc, "remarks", languageType, psiModule); } if (settings.GetValue((IdentifierTooltipSettings s) => s.ShowExceptions)) { identifierContent.Exceptions.AddRange(GetExceptions(xmlDoc, languageType, psiModule)); } } if (settings.GetValue((IdentifierTooltipSettings s) => s.ShowOverloadCount)) { identifierContent.OverloadCount = TryGetOverloadCount(element as IFunction, info.Reference, languageType); } if (info.DeclaredElement is ITypeElement typeElement) { var baseTypeDisplayKind = settings.GetValue((IdentifierTooltipSettings s) => s.BaseTypeDisplayKind); var implementedInterfacesDisplayKind = settings.GetValue((IdentifierTooltipSettings s) => s.ImplementedInterfacesDisplayKind); if (baseTypeDisplayKind != BaseTypeDisplayKind.Never || implementedInterfacesDisplayKind != ImplementedInterfacesDisplayKind.Never) { AddSuperTypes(identifierContent, typeElement, baseTypeDisplayKind, implementedInterfacesDisplayKind, languageType, info.TreeNode, highlighterIdProvider, settings); } if (settings.GetValue((IdentifierTooltipSettings s) => s.ShowAttributesUsage) && typeElement.IsAttribute()) { identifierContent.AttributeUsage = GetAttributeUsage((IClass)info.DeclaredElement); } } return(identifierContent); }
private IdentifierTooltipContent TryPresentColorized([NotNull] DeclaredElementInfo info, [NotNull] IContextBoundSettingsStore settings) { PsiLanguageType languageType = info.TreeNode.Language; IDeclaredElement element = info.DeclaredElement; IPsiModule psiModule = info.TreeNode.GetPsiModule(); HighlighterIdProvider highlighterIdProvider = _highlighterIdProviderFactory.CreateProvider(settings); RichText identifierText = _colorizerPresenter.TryPresent( new DeclaredElementInstance(element, info.Substitution), PresenterOptions.ForIdentifierToolTip(settings), languageType, highlighterIdProvider); if (identifierText == null || identifierText.IsEmpty) { return(null); } var identifierContent = new IdentifierTooltipContent(identifierText, info.SourceRange) { Description = TryGetDescription(element, psiModule, languageType, DeclaredElementDescriptionStyle.NO_OBSOLETE_SUMMARY_STYLE), }; if (settings.GetValue((IdentifierTooltipSettings s) => s.ShowIcon)) { identifierContent.Icon = TryGetIcon(element); } if (settings.GetValue((IdentifierTooltipSettings s) => s.ShowObsolete)) { identifierContent.Obsolete = TryRemoveObsoletePrefix(TryGetDescription(element, psiModule, languageType, DeclaredElementDescriptionStyle.OBSOLETE_DESCRIPTION)); } if (settings.GetValue((IdentifierTooltipSettings s) => s.ShowExceptions)) { identifierContent.Exceptions.AddRange(GetExceptions(element, languageType, psiModule)); } if (settings.GetValue((IdentifierTooltipSettings s) => s.ShowOverloadCount)) { identifierContent.OverloadCount = TryGetOverloadCountCount(element as IFunction, info.Reference, languageType); } var typeElement = info.DeclaredElement as ITypeElement; if (typeElement != null) { bool showBaseType = settings.GetValue((IdentifierTooltipSettings s) => s.ShowBaseType); bool showImplementedInterfaces = settings.GetValue((IdentifierTooltipSettings s) => s.ShowImplementedInterfaces); if (showBaseType || showImplementedInterfaces) { AddSuperTypes(identifierContent, typeElement, showBaseType, showImplementedInterfaces, languageType, highlighterIdProvider); } if (settings.GetValue((IdentifierTooltipSettings s) => s.ShowAttributesUsage) && typeElement.IsAttribute()) { identifierContent.AttributeUsage = GetAttributeUsage((IClass)info.DeclaredElement); } } return(identifierContent); }