add parameter symbol

This commit is contained in:
Matt Parker
2025-10-12 11:39:15 +10:00
parent ea4240cb13
commit 50b27f3b6c
5 changed files with 58 additions and 11 deletions

View File

@@ -130,7 +130,7 @@ public partial class SharpIdeCodeEdit : CodeEdit
INamedTypeSymbol namedTypeSymbol => new Control(),
IPropertySymbol propertySymbol => SymbolInfoComponents.GetPropertySymbolInfo(propertySymbol),
IFieldSymbol fieldSymbol => SymbolInfoComponents.GetFieldSymbolInfo(fieldSymbol),
IParameterSymbol parameterSymbol => new Control(),
IParameterSymbol parameterSymbol => SymbolInfoComponents.GetsParameterSymbolInfo(parameterSymbol),
_ => new Control()
};
popupPanel.AddChild(symbolInfoNode);

View File

@@ -19,7 +19,6 @@ public static partial class SymbolInfoComponents
label.PushFont(MonospaceFont);
label.AddAttributes(methodSymbol);
label.AddAccessibilityModifier(methodSymbol);
label.AddText(" ");
label.AddMethodStaticModifier(methodSymbol);
label.AddVirtualModifier(methodSymbol);
label.AddAbstractModifier(methodSymbol);
@@ -42,13 +41,14 @@ public static partial class SymbolInfoComponents
private static string GetAccessibilityString(this Accessibility accessibility) => accessibility switch
{
Accessibility.Public => "public",
Accessibility.Private => "private",
Accessibility.Protected => "protected",
Accessibility.Internal => "internal",
Accessibility.ProtectedOrInternal => "protected internal",
Accessibility.ProtectedAndInternal => "private protected",
_ => "unknown"
Accessibility.Public => "public ",
Accessibility.Private => "private ",
Accessibility.Protected => "protected ",
Accessibility.Internal => "internal ",
Accessibility.ProtectedOrInternal => "protected internal ",
Accessibility.ProtectedAndInternal => "private protected ",
Accessibility.NotApplicable => string.Empty,
_ => "unknown "
};
private static void AddAccessibilityModifier(this RichTextLabel label, ISymbol methodSymbol)

View File

@@ -15,7 +15,6 @@ public static partial class SymbolInfoComponents
label.PushFont(MonospaceFont);
label.AddAttributes(symbol);
label.AddAccessibilityModifier(symbol);
label.AddText(" ");
label.AddStaticModifier(symbol);
label.AddReadonlyModifier(symbol);
label.AddVirtualModifier(symbol);

View File

@@ -0,0 +1,49 @@
using Godot;
using Microsoft.CodeAnalysis;
namespace SharpIDE.Godot.Features.CodeEditor;
public static partial class SymbolInfoComponents
{
public static Control GetsParameterSymbolInfo(IParameterSymbol symbol)
{
var label = new RichTextLabel();
label.FitContent = true;
label.AutowrapMode = TextServer.AutowrapMode.Off;
label.SetAnchorsPreset(Control.LayoutPreset.FullRect);
label.PushColor(CachedColors.White);
label.PushFont(MonospaceFont);
label.AddAttributes(symbol);
label.AddText("parameter ");
label.AddAccessibilityModifier(symbol);
label.AddStaticModifier(symbol);
label.AddVirtualModifier(symbol);
label.AddAbstractModifier(symbol);
label.AddOverrideModifier(symbol);
label.AddParameterTypeName(symbol);
label.AddParameterName(symbol);
label.AddContainingNamespaceAndClass(symbol);
label.Newline();
//label.AddTypeParameterArguments(symbol);
label.Pop(); // font
label.AddDocs(symbol);
label.Pop();
return label;
}
private static void AddParameterTypeName(this RichTextLabel label, IParameterSymbol symbol)
{
label.PushColor(GetSymbolColourByType(symbol.Type));
label.AddText(symbol.Type.ToDisplayString(SymbolDisplayFormat.MinimallyQualifiedFormat));
label.Pop();
label.AddText(" ");
}
private static void AddParameterName(this RichTextLabel label, IParameterSymbol symbol)
{
label.PushColor(CachedColors.VariableBlue);
label.AddText(symbol.Name);
label.Pop();
}
}

View File

@@ -15,7 +15,6 @@ public partial class SymbolInfoComponents
label.PushFont(MonospaceFont);
label.AddAttributes(symbol);
label.AddAccessibilityModifier(symbol);
label.AddText(" ");
label.AddStaticModifier(symbol);
label.AddReadonlyModifier(symbol);
label.AddVirtualModifier(symbol);