add doc comment v1
This commit is contained in:
@@ -496,13 +496,6 @@ public static class RoslynAnalysis
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
var documentationCommentXml = symbol.GetDocumentationCommentXml();
|
|
||||||
if (documentationCommentXml is not null)
|
|
||||||
{
|
|
||||||
var comment = DocumentationComment.FromXmlFragment(documentationCommentXml);
|
|
||||||
;
|
|
||||||
}
|
|
||||||
|
|
||||||
Console.WriteLine($"Symbol found: {symbol.Name} ({symbol.Kind}) - {symbol.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat)}");
|
Console.WriteLine($"Symbol found: {symbol.Name} ({symbol.Kind}) - {symbol.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat)}");
|
||||||
return symbol;
|
return symbol;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
using Godot;
|
using Godot;
|
||||||
using Microsoft.CodeAnalysis;
|
using Microsoft.CodeAnalysis;
|
||||||
|
using Microsoft.CodeAnalysis.Shared.Utilities;
|
||||||
|
|
||||||
namespace SharpIDE.Godot.Features.CodeEditor;
|
namespace SharpIDE.Godot.Features.CodeEditor;
|
||||||
|
|
||||||
@@ -12,8 +13,10 @@ public static class SymbolInfoComponents
|
|||||||
label.FitContent = true;
|
label.FitContent = true;
|
||||||
label.AutowrapMode = TextServer.AutowrapMode.Off;
|
label.AutowrapMode = TextServer.AutowrapMode.Off;
|
||||||
label.SetAnchorsPreset(Control.LayoutPreset.FullRect);
|
label.SetAnchorsPreset(Control.LayoutPreset.FullRect);
|
||||||
|
label.PushColor(CachedColors.White);
|
||||||
label.PushFont(MonospaceFont);
|
label.PushFont(MonospaceFont);
|
||||||
label.PushColor(CachedColors.KeywordBlue);
|
label.PushColor(CachedColors.KeywordBlue);
|
||||||
|
// TODO: Attributes
|
||||||
label.AddText(methodSymbol.DeclaredAccessibility.GetAccessibilityString());
|
label.AddText(methodSymbol.DeclaredAccessibility.GetAccessibilityString());
|
||||||
label.Pop();
|
label.Pop();
|
||||||
label.AddText(" ");
|
label.AddText(" ");
|
||||||
@@ -35,8 +38,8 @@ public static class SymbolInfoComponents
|
|||||||
label.AddHr(100, 1, CachedColors.Gray);
|
label.AddHr(100, 1, CachedColors.Gray);
|
||||||
label.Newline();
|
label.Newline();
|
||||||
label.Pop(); // font
|
label.Pop(); // font
|
||||||
label.AddText("docs");
|
label.AddDocs(methodSymbol);
|
||||||
|
label.Pop(); // default white
|
||||||
return label;
|
return label;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -256,6 +259,113 @@ public static class SymbolInfoComponents
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void AddDocs(this RichTextLabel label, IMethodSymbol methodSymbol)
|
||||||
|
{
|
||||||
|
var xmlDocs = methodSymbol.GetDocumentationCommentXml();
|
||||||
|
if (string.IsNullOrWhiteSpace(xmlDocs)) return;
|
||||||
|
var docComment = DocumentationComment.FromXmlFragment(xmlDocs);
|
||||||
|
if (docComment.SummaryText is not null)
|
||||||
|
{
|
||||||
|
label.AddText(docComment.SummaryText);
|
||||||
|
label.Newline();
|
||||||
|
}
|
||||||
|
label.PushTable(2);
|
||||||
|
if (docComment.ParameterNames.Length is not 0)
|
||||||
|
{
|
||||||
|
label.PushCell();
|
||||||
|
label.AddText("Params:");
|
||||||
|
label.Pop();
|
||||||
|
foreach (var (index, parameterName) in docComment.ParameterNames.Index())
|
||||||
|
{
|
||||||
|
var parameterText = docComment.GetParameterText(parameterName);
|
||||||
|
if (parameterText is null) continue;
|
||||||
|
label.PushCell();
|
||||||
|
label.PushColor(CachedColors.VariableBlue);
|
||||||
|
label.AddText(parameterName);
|
||||||
|
label.Pop();
|
||||||
|
label.AddText(" - ");
|
||||||
|
label.AddText(parameterText);
|
||||||
|
label.Pop(); // cell
|
||||||
|
if (index < docComment.ParameterNames.Length - 1)
|
||||||
|
{
|
||||||
|
label.PushCell();
|
||||||
|
label.Pop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (docComment.TypeParameterNames.Length is not 0)
|
||||||
|
{
|
||||||
|
label.PushCell();
|
||||||
|
label.AddText("Type Params:");
|
||||||
|
label.Pop();
|
||||||
|
foreach (var (index, typeParameterName) in docComment.TypeParameterNames.Index())
|
||||||
|
{
|
||||||
|
var typeParameterText = docComment.GetTypeParameterText(typeParameterName);
|
||||||
|
if (typeParameterText is null) continue;
|
||||||
|
label.PushCell();
|
||||||
|
label.PushColor(CachedColors.ClassGreen);
|
||||||
|
label.AddText(typeParameterName);
|
||||||
|
label.Pop();
|
||||||
|
label.AddText(" - ");
|
||||||
|
label.AddText(typeParameterText);
|
||||||
|
label.Pop(); // cell
|
||||||
|
if (index < docComment.TypeParameterNames.Length - 1)
|
||||||
|
{
|
||||||
|
label.PushCell();
|
||||||
|
label.Pop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (docComment.ReturnsText is not null)
|
||||||
|
{
|
||||||
|
label.PushCell();
|
||||||
|
label.AddText("Returns:");
|
||||||
|
label.Pop();
|
||||||
|
label.PushCell();
|
||||||
|
label.AddText(docComment.ReturnsText);
|
||||||
|
label.Pop(); // cell
|
||||||
|
}
|
||||||
|
|
||||||
|
if (docComment.ExceptionTypes.Length is not 0)
|
||||||
|
{
|
||||||
|
label.PushCell();
|
||||||
|
label.AddText("Exceptions:");
|
||||||
|
label.Pop();
|
||||||
|
foreach (var (index, exceptionTypeName) in docComment.ExceptionTypes.Index())
|
||||||
|
{
|
||||||
|
var exceptionText = docComment.GetExceptionTexts(exceptionTypeName).FirstOrDefault();
|
||||||
|
if (exceptionText is null) continue;
|
||||||
|
label.PushCell();
|
||||||
|
label.PushColor(CachedColors.InterfaceGreen);
|
||||||
|
label.AddText(exceptionTypeName);
|
||||||
|
label.Pop();
|
||||||
|
label.AddText(" - ");
|
||||||
|
label.AddText(exceptionText);
|
||||||
|
label.Pop(); // cell
|
||||||
|
if (index < docComment.ExceptionTypes.Length - 1)
|
||||||
|
{
|
||||||
|
label.PushCell();
|
||||||
|
label.Pop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (docComment.RemarksText is not null)
|
||||||
|
{
|
||||||
|
label.PushCell();
|
||||||
|
label.AddText("Remarks:");
|
||||||
|
label.Pop();
|
||||||
|
label.PushCell();
|
||||||
|
label.AddText(docComment.RemarksText);
|
||||||
|
label.Pop(); // cell
|
||||||
|
label.PushCell();
|
||||||
|
label.Pop();
|
||||||
|
}
|
||||||
|
|
||||||
|
label.Pop(); // table
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: handle arrays etc, where there are multiple colours in one type
|
// TODO: handle arrays etc, where there are multiple colours in one type
|
||||||
private static Color GetSymbolColourByType(this ITypeSymbol symbol)
|
private static Color GetSymbolColourByType(this ITypeSymbol symbol)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -13,5 +13,14 @@
|
|||||||
<PackageReference Include="ObservableCollections" />
|
<PackageReference Include="ObservableCollections" />
|
||||||
<PackageReference Include="ObservableCollections.R3" />
|
<PackageReference Include="ObservableCollections.R3" />
|
||||||
<PackageReference Include="R3" />
|
<PackageReference Include="R3" />
|
||||||
|
<PackageReference Include="IgnoresAccessChecksToGenerator">
|
||||||
|
<PrivateAssets>all</PrivateAssets>
|
||||||
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
|
</PackageReference>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<IgnoresAccessChecksTo Include="Microsoft.CodeAnalysis.Workspaces" />
|
||||||
|
<IgnoresAccessChecksToExcludeTypeName Include="System.Linq.RoslynEnumerableExtensions" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
Reference in New Issue
Block a user