diff --git a/src/SharpIDE.Godot/Features/CodeEditor/SharpIdeCodeEdit.cs b/src/SharpIDE.Godot/Features/CodeEditor/SharpIdeCodeEdit.cs index 78447e4..de75798 100644 --- a/src/SharpIDE.Godot/Features/CodeEditor/SharpIdeCodeEdit.cs +++ b/src/SharpIDE.Godot/Features/CodeEditor/SharpIdeCodeEdit.cs @@ -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); diff --git a/src/SharpIDE.Godot/Features/CodeEditor/SymbolInfoComponents.cs b/src/SharpIDE.Godot/Features/CodeEditor/SymbolInfoComponents.cs index ef412e5..d0fc62c 100644 --- a/src/SharpIDE.Godot/Features/CodeEditor/SymbolInfoComponents.cs +++ b/src/SharpIDE.Godot/Features/CodeEditor/SymbolInfoComponents.cs @@ -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) diff --git a/src/SharpIDE.Godot/Features/CodeEditor/SymbolTooltips/FieldTooltip.cs b/src/SharpIDE.Godot/Features/CodeEditor/SymbolTooltips/FieldTooltip.cs index bbbe2bc..20b6553 100644 --- a/src/SharpIDE.Godot/Features/CodeEditor/SymbolTooltips/FieldTooltip.cs +++ b/src/SharpIDE.Godot/Features/CodeEditor/SymbolTooltips/FieldTooltip.cs @@ -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); diff --git a/src/SharpIDE.Godot/Features/CodeEditor/SymbolTooltips/ParameterTooltip.cs b/src/SharpIDE.Godot/Features/CodeEditor/SymbolTooltips/ParameterTooltip.cs new file mode 100644 index 0000000..174d253 --- /dev/null +++ b/src/SharpIDE.Godot/Features/CodeEditor/SymbolTooltips/ParameterTooltip.cs @@ -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(); + } +} \ No newline at end of file diff --git a/src/SharpIDE.Godot/Features/CodeEditor/SymbolTooltips/PropertyTooltip.cs b/src/SharpIDE.Godot/Features/CodeEditor/SymbolTooltips/PropertyTooltip.cs index 5700ecb..5f33505 100644 --- a/src/SharpIDE.Godot/Features/CodeEditor/SymbolTooltips/PropertyTooltip.cs +++ b/src/SharpIDE.Godot/Features/CodeEditor/SymbolTooltips/PropertyTooltip.cs @@ -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);