Skip to content

Commit

Permalink
- updated Resharper SDK to 2021.3.3
Browse files Browse the repository at this point in the history
- updated Nuke to 6.0.1
- added support for all variants of "see" documentation tags.(#151, #159)
- added support for parameters info in documentation. (#151)
  • Loading branch information
DimitarCC committed Mar 3, 2022
1 parent 7724357 commit a08e88a
Show file tree
Hide file tree
Showing 12 changed files with 456 additions and 28 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# Changelog

## 3.17.6.4
- [Added] Support for all variants of "see" documentation tags.(#151, #159)
- [Added] Support for parameters info in documentation. (#151)
- [Updated] Updated ReSharper SDK to 2021.3.3.

## 3.17.0
- [Added] Support for ReSharper 2021.3.0 RTM.
- [Added] Support for init property accessors.
Expand Down
6 changes: 3 additions & 3 deletions build/_build.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,16 @@
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
<RootNamespace></RootNamespace>
<IsPackable>False</IsPackable>
<Nullable>enable</Nullable>
<Nullable>enable</Nullable>
<NukeTelemetryVersion>1</NukeTelemetryVersion>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="NuGet.CommandLine" Version="5.11.0">
<PackageReference Include="NuGet.CommandLine" Version="6.0.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Nuke.Common" Version="6.0.0-beta0010" />
<PackageReference Include="Nuke.Common" Version="6.0.1" />
</ItemGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
using System.Xml;
using GammaJul.ReSharper.EnhancedTooltip.Presentation;
using GammaJul.ReSharper.EnhancedTooltip.Settings;
using GammaJul.ReSharper.EnhancedTooltip.VisualStudio;
using JetBrains.Application.Settings;
using JetBrains.DocumentModel;
using JetBrains.ProjectModel;
Expand Down Expand Up @@ -238,6 +239,8 @@ private static Expression<Func<IdentifierTooltipSettings, ConstructorReferenceDi

if (settings.GetValue((IdentifierTooltipSettings s) => s.ShowExceptions))
identifierContent.Exceptions.AddRange(GetExceptions(xmlDoc, languageType, psiModule));
if (settings.GetValue((IdentifierTooltipSettings s) => s.ShowParams))
identifierContent.Parameters.AddRange(IdentifierTooltipContentProvider.GetParams(xmlDoc, languageType, psiModule));

}

Expand Down Expand Up @@ -415,7 +418,7 @@ private static AttributeUsageContent GetAttributeUsage(IClass attributeClass) {
if (returnsNode is null || !returnsNode.HasChildNodes)
return null;

var richText = XmlDocRichTextPresenter.Run(returnsNode, false, languageType, DeclaredElementPresenterTextStyles.Empty, psiModule).RichText;
var richText = XmlDocRichTextPresenterEx.Run(returnsNode, false, languageType, DeclaredElementPresenterTextStyles.Empty, psiModule).RichText;
return richText.IsNullOrEmpty() ? null : richText;
}

Expand All @@ -434,7 +437,49 @@ private static IEnumerable<ExceptionContent> GetExceptions(
}
return exceptions.ResultingList();
}
private static IEnumerable<ParamContent> GetParams(
XmlNode? xmlDoc,
PsiLanguageType languageType,
IPsiModule psiModule) {
XmlNodeList? typeParamNodes = xmlDoc?.SelectNodes("typeparam");
XmlNodeList? paramNodes = xmlDoc?.SelectNodes("param");
Boolean paramExists = !(typeParamNodes?.Count == 0 && paramNodes?.Count == 0);
if (!paramExists)
return EmptyList<ParamContent>.InstanceList;

var paramNodesList = new LocalList<ParamContent>();
if (typeParamNodes != null) {
foreach (XmlNode paramNode in typeParamNodes) {
if (IdentifierTooltipContentProvider.TryExtractParams(paramNode as XmlElement, languageType, psiModule) is { } typeparam)
paramNodesList.Add(typeparam);
}
}

if (paramNodes != null) {
foreach (XmlNode paramNode in paramNodes) {
if (IdentifierTooltipContentProvider.TryExtractParams(paramNode as XmlElement, languageType, psiModule) is { } param)
paramNodesList.Add(param);
}
}

return paramNodesList.ResultingList();
}
private static ParamContent? TryExtractParams(
XmlElement? paramElement,
PsiLanguageType languageType,
IPsiModule psiModule) {

string? name = paramElement?.GetAttribute("name");
if (String.IsNullOrEmpty(name))
return null;

var paramContent = new ParamContent(name!);

RichText richText = XmlDocRichTextPresenterEx.Run(paramElement!, false, languageType, DeclaredElementPresenterTextStyles.Empty, psiModule).RichText;
if (!richText.IsNullOrEmpty())
paramContent.Description = richText;
return paramContent;
}
private static ExceptionContent? TryExtractException(
XmlElement? exceptionElement,
PsiLanguageType languageType,
Expand All @@ -450,7 +495,7 @@ private static IEnumerable<ExceptionContent> GetExceptions(

var exceptionContent = new ExceptionContent(cref);
if (exceptionElement!.HasChildNodes) {
RichText richText = XmlDocRichTextPresenter.Run(exceptionElement, false, languageType, DeclaredElementPresenterTextStyles.Empty, psiModule).RichText;
RichText richText = XmlDocRichTextPresenterEx.Run(exceptionElement, false, languageType, DeclaredElementPresenterTextStyles.Empty, psiModule).RichText;
if (!richText.IsNullOrEmpty())
exceptionContent.Description = richText;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,16 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="JetBrains.ReSharper.SDK" Version="2021.3.0" />
<PackageReference Include="JetBrains.ReSharper.SDK" Version="2021.3.3" />
<PackageReference Include="EnvDTE" Version="8.0.0" />
<PackageReference Include="VSSDK.Editor" Version="11.0.*" />
<PackageReference Include="VSSDK.Language" Version="11.0.*" />
<PackageReference Include="VSSDK.Shell.Immutable.11" Version="11.0.*" />
<PackageReference Include="VSSDK.Text" Version="11.0.*" />
<PackageReference Include="NuGet.CommandLine" Version="4.6.2" />
<PackageReference Include="NuGet.CommandLine" Version="6.0.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ public class IdentifierTooltipContent : TooltipContent {

public RichText? Return { get; set; }

public List<ParamContent> Parameters { get; } = new();

public RichText? Value { get; set; }

public RichText? Remarks { get; set; }
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
using JetBrains.UI.RichText;

namespace GammaJul.ReSharper.EnhancedTooltip.Presentation {

public sealed class ParamContent {

public string Name { get; }

public RichText? Description { get; set; }

public ParamContent(string name) {
Name = name;
}

}

}
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,29 @@
RichText="{Binding Description}" />
</StackPanel>

<ItemsControl x:Name="ParametersPresenter" ItemsSource="{Binding Parameters}" Grid.IsSharedSizeScope="True">
<ItemsControl.ItemTemplate>
<DataTemplate DataType="{x:Type richText:RichText}">

<DockPanel Margin="0,2,0,0">
<StackPanel Orientation="Horizontal" VerticalAlignment="Top" DockPanel.Dock="Left">
<Border BorderBrush="Gray" BorderThickness="1" Margin="0,0,4,0" VerticalAlignment="Center">
<TextBlock Style="{StaticResource TitleTextBlockStyle}" Text="Parameter"
FontSize="{Binding Path=(TextElement.FontSize), ElementName=Root, Converter={StaticResource SmallFontSizeConverter}}" />
</Border>
<TextBlock Text="{Binding Name}" TextWrapping="Wrap" VerticalAlignment="Center" Margin="0,0,0,1" />
<TextBlock Text="" FontWeight="Bold" VerticalAlignment="Center" Margin="0,0,0,1" />
</StackPanel>

<local:AutoContrastedRichTextPresenter TextWrapping="Wrap" VerticalAlignment="Center"
RichText="{Binding Description}" Margin="0,0,0,1" />

</DockPanel>

</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>

<DockPanel x:Name="ObsoletePresenter" Margin="0,2,0,0">
<Border Style="{StaticResource TitleBorderStyle}" DockPanel.Dock="Left">
<TextBlock Style="{StaticResource TitleTextBlockStyle}" Text="Obsolete"
Expand Down Expand Up @@ -248,6 +271,9 @@
<DataTrigger Binding="{Binding HasItems, ElementName=ExceptionsPresenter}" Value="False">
<Setter TargetName="ExceptionsPresenter" Property="Visibility" Value="Collapsed" />
</DataTrigger>
<DataTrigger Binding="{Binding HasItems, ElementName=ParametersPresenter}" Value="False">
<Setter TargetName="ParametersPresenter" Property="Visibility" Value="Collapsed" />
</DataTrigger>
<DataTrigger Binding="{Binding Description}" Value="{x:Null}">
<Setter TargetName="DescriptionPresenter" Property="Visibility" Value="Collapsed" />
</DataTrigger>
Expand All @@ -257,6 +283,7 @@
<Condition Binding="{Binding Return}" Value="{x:Null}" />
<Condition Binding="{Binding Remarks}" Value="{x:Null}" />
<Condition Binding="{Binding HasItems, ElementName=ExceptionsPresenter}" Value="False" />
<Condition Binding="{Binding HasItems, ElementName=ParametersPresenter}" Value="False" />
</MultiDataTrigger.Conditions>
<Setter TargetName="DescriptionPresenter" Property="Margin" Value="0" />
</MultiDataTrigger>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Julien Lebosquain")]
[assembly: AssemblyProduct("GammaJul.ReSharper.EnhancedTooltip")]
[assembly: AssemblyCopyright("Copyright © 2013-2021 Julien Lebosquain")]
[assembly: AssemblyCopyright("Copyright © 2013-2022 Julien Lebosquain")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

[assembly: AssemblyVersion("3.17.0.0")]
[assembly: AssemblyVersion("3.17.6.4")]
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@
<RowDefinition Height="Auto" SharedSizeGroup="SettingRowGroup" />
<RowDefinition Height="Auto" SharedSizeGroup="SettingRowGroup" />
<RowDefinition Height="Auto" SharedSizeGroup="SettingRowGroup" />
<RowDefinition Height="Auto" SharedSizeGroup="SettingRowGroup" />
</Grid.RowDefinitions>
<controls:SectionHeading Grid.Row="0" Text="Identifier Tooltip" />
<controls:CheckBoxDisabledNoCheck2 Grid.Row="1" x:Name="IdentifierTooltipEnabledCheckBox" />
Expand All @@ -78,56 +79,57 @@
<controls:CheckBoxDisabledNoCheck2 Grid.Row="10" x:Name="IdentifierTooltipUseStructModifiersInKindCheckBox" Margin="{StaticResource IndentedMargin}" />
<controls:CheckBoxDisabledNoCheck2 Grid.Row="11" x:Name="IdentifierTooltipShowDocumentationCheckBox" />
<controls:CheckBoxDisabledNoCheck2 Grid.Row="12" x:Name="IdentifierTooltipShowObsoleteCheckBox" Margin="{StaticResource IndentedMargin}" />
<controls:CheckBoxDisabledNoCheck2 Grid.Row="13" x:Name="IdentifierTooltipShowValueCheckBox" Margin="{StaticResource IndentedMargin}" />
<controls:CheckBoxDisabledNoCheck2 Grid.Row="14" x:Name="IdentifierTooltipShowReturnCheckBox" Margin="{StaticResource IndentedMargin}" />
<controls:CheckBoxDisabledNoCheck2 Grid.Row="15" x:Name="IdentifierTooltipShowRemarksCheckBox" Margin="{StaticResource IndentedMargin}" />
<controls:CheckBoxDisabledNoCheck2 Grid.Row="16" x:Name="IdentifierTooltipShowExceptionsCheckBox" Margin="{StaticResource IndentedMargin}" />
<controls:CheckBoxDisabledNoCheck2 Grid.Row="17" x:Name="IdentifierTooltipShowOverloadCountCheckBox" />
<controls:CheckBoxDisabledNoCheck2 Grid.Row="18" x:Name="IdentifierTooltipShowArgumentsRoleCheckBox" />
<controls:CheckBoxDisabledNoCheck2 Grid.Row="19" x:Name="IdentifierTooltipShowShowAttributesUsageCheckBox" />
<controls:CheckBoxDisabledNoCheck2 Grid.Row="20" x:Name="IdentifierTooltipUseTypeKeywordsCheckBox" />
<controls:CheckBoxDisabledNoCheck2 Grid.Row="21" x:Name="IdentifierTooltipUseShortNullableFormCheckBox" />
<StackPanel Grid.Row="22" Orientation="Horizontal" Margin="{StaticResource CommonMargin}">
<controls:CheckBoxDisabledNoCheck2 Grid.Row="13" x:Name="IdentifierTooltipShowParametersCheckBox" Margin="{StaticResource IndentedMargin}" />
<controls:CheckBoxDisabledNoCheck2 Grid.Row="14" x:Name="IdentifierTooltipShowValueCheckBox" Margin="{StaticResource IndentedMargin}" />
<controls:CheckBoxDisabledNoCheck2 Grid.Row="15" x:Name="IdentifierTooltipShowReturnCheckBox" Margin="{StaticResource IndentedMargin}" />
<controls:CheckBoxDisabledNoCheck2 Grid.Row="16" x:Name="IdentifierTooltipShowRemarksCheckBox" Margin="{StaticResource IndentedMargin}" />
<controls:CheckBoxDisabledNoCheck2 Grid.Row="17" x:Name="IdentifierTooltipShowExceptionsCheckBox" Margin="{StaticResource IndentedMargin}" />
<controls:CheckBoxDisabledNoCheck2 Grid.Row="18" x:Name="IdentifierTooltipShowOverloadCountCheckBox" />
<controls:CheckBoxDisabledNoCheck2 Grid.Row="19" x:Name="IdentifierTooltipShowArgumentsRoleCheckBox" />
<controls:CheckBoxDisabledNoCheck2 Grid.Row="20" x:Name="IdentifierTooltipShowShowAttributesUsageCheckBox" />
<controls:CheckBoxDisabledNoCheck2 Grid.Row="21" x:Name="IdentifierTooltipUseTypeKeywordsCheckBox" />
<controls:CheckBoxDisabledNoCheck2 Grid.Row="22" x:Name="IdentifierTooltipUseShortNullableFormCheckBox" />
<StackPanel Grid.Row="23" Orientation="Horizontal" Margin="{StaticResource CommonMargin}">
<Label Target="{Binding ElementName=IdentifierTooltipBaseTypeDisplayKindComboBox}" />
<ComboBox x:Name="IdentifierTooltipBaseTypeDisplayKindComboBox" />
</StackPanel>
<StackPanel Grid.Row="23" Orientation="Horizontal" Margin="{StaticResource CommonMargin}">
<StackPanel Grid.Row="24" Orientation="Horizontal" Margin="{StaticResource CommonMargin}">
<Label Target="{Binding ElementName=IdentifierTooltipImplementedInterfacesDisplayKindComboBox}" />
<ComboBox x:Name="IdentifierTooltipImplementedInterfacesDisplayKindComboBox" />
</StackPanel>
<StackPanel Grid.Row="24" Orientation="Horizontal" Margin="{StaticResource CommonMargin}">
<StackPanel Grid.Row="25" Orientation="Horizontal" Margin="{StaticResource CommonMargin}">
<Label Target="{Binding ElementName=IdentifierTooltipShowIdentifierAttributesComboBox}" />
<ComboBox x:Name="IdentifierTooltipShowIdentifierAttributesComboBox" />
<controls:CheckBoxDisabledNoCheck2 x:Name="IdentifierTooltipShowIdentifierAttributesArgumentsCheckBox"
Margin="{StaticResource InlineControlMargin}" VerticalAlignment="Center" />
</StackPanel>
<StackPanel Grid.Row="25" Orientation="Horizontal" Margin="{StaticResource CommonMargin}">
<StackPanel Grid.Row="26" Orientation="Horizontal" Margin="{StaticResource CommonMargin}">
<Label Target="{Binding ElementName=IdentifierTooltipShowParametersAttributesComboBox}" />
<ComboBox x:Name="IdentifierTooltipShowParametersAttributesComboBox" />
<controls:CheckBoxDisabledNoCheck2 x:Name="IdentifierTooltipShowParametersAttributesArgumentsCheckBox"
Margin="{StaticResource InlineControlMargin}" VerticalAlignment="Center" />
</StackPanel>
<StackPanel Grid.Row="26" Orientation="Horizontal" Margin="{StaticResource CommonMargin}">
<StackPanel Grid.Row="27" Orientation="Horizontal" Margin="{StaticResource CommonMargin}">
<Label Target="{Binding ElementName=IdentifierTooltipAttributeConstructorReferenceDisplayComboBox}" />
<ComboBox x:Name="IdentifierTooltipAttributeConstructorReferenceDisplayComboBox" />
</StackPanel>
<StackPanel Grid.Row="27" Orientation="Horizontal" Margin="{StaticResource CommonMargin}">
<StackPanel Grid.Row="28" Orientation="Horizontal" Margin="{StaticResource CommonMargin}">
<Label Target="{Binding ElementName=IdentifierTooltipConstructorReferenceDisplayComboBox}" />
<ComboBox x:Name="IdentifierTooltipConstructorReferenceDisplayComboBox" />
</StackPanel>
<StackPanel Grid.Row="28" Orientation="Horizontal" Margin="{StaticResource CommonMargin}">
<StackPanel Grid.Row="29" Orientation="Horizontal" Margin="{StaticResource CommonMargin}">
<Label Target="{Binding ElementName=IdentifierTooltipSolutionCodeNamespaceDisplayKindComboBox}" />
<ComboBox x:Name="IdentifierTooltipSolutionCodeNamespaceDisplayKindComboBox" />
</StackPanel>
<StackPanel Grid.Row="29" Orientation="Horizontal" Margin="{StaticResource CommonMargin}">
<StackPanel Grid.Row="30" Orientation="Horizontal" Margin="{StaticResource CommonMargin}">
<Label Target="{Binding ElementName=IdentifierTooltipExternalCodeNamespaceDisplayKindComboBox}" />
<ComboBox x:Name="IdentifierTooltipExternalCodeNamespaceDisplayKindComboBox" />
</StackPanel>
<StackPanel Grid.Row="30" Orientation="Horizontal" Margin="{StaticResource CommonMargin}">
<StackPanel Grid.Row="31" Orientation="Horizontal" Margin="{StaticResource CommonMargin}">
<Label Target="{Binding ElementName=IdentifierTooltipParametersFormattingModeComboBox}" />
<ComboBox x:Name="IdentifierTooltipParametersFormattingModeComboBox" />
</StackPanel>
<StackPanel Grid.Row="31" Orientation="Horizontal" Margin="{StaticResource CommonMargin}">
<StackPanel Grid.Row="32" Orientation="Horizontal" Margin="{StaticResource CommonMargin}">
<Label Target="{Binding ElementName=IdentifierTooltipAttributesFormattingModeComboBox}" />
<ComboBox x:Name="IdentifierTooltipAttributesFormattingModeComboBox" />
</StackPanel>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,7 @@ private void SetIdentifierTooltipSettingsBindings() {
SetCheckBoxBinding((IdentifierTooltipSettings s) => s.ShowValue, IdentifierTooltipShowValueCheckBox, IdentifierTooltipShowDocumentationCheckBox);
SetCheckBoxBinding((IdentifierTooltipSettings s) => s.ShowRemarks, IdentifierTooltipShowRemarksCheckBox, IdentifierTooltipShowDocumentationCheckBox);
SetCheckBoxBinding((IdentifierTooltipSettings s) => s.ShowExceptions, IdentifierTooltipShowExceptionsCheckBox, IdentifierTooltipShowDocumentationCheckBox);
SetCheckBoxBinding((IdentifierTooltipSettings s) => s.ShowParams, IdentifierTooltipShowParametersCheckBox, IdentifierTooltipShowDocumentationCheckBox);

SetCheckBoxBinding((IdentifierTooltipSettings s) => s.ShowOverloadCount, IdentifierTooltipShowOverloadCountCheckBox, rootCheckBox);
SetCheckBoxBinding((IdentifierTooltipSettings s) => s.ShowArgumentsRole, IdentifierTooltipShowArgumentsRoleCheckBox, rootCheckBox);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ public class IdentifierTooltipSettings {

[SettingsEntry(true, "Display documented exceptions")]
public bool ShowExceptions { get; set; }
[SettingsEntry(true, "Display parameters information")]
public bool ShowParams { get; set; }

[SettingsEntry(true, "Display overload count where applicable")]
public bool ShowOverloadCount { get; set; }
Expand Down
Loading

0 comments on commit a08e88a

Please sign in to comment.