add local tooltip

This commit is contained in:
Matt Parker
2025-10-12 12:15:47 +10:00
parent 2145997190
commit de3a950327
2 changed files with 48 additions and 1 deletions

View File

@@ -131,7 +131,7 @@ public partial class SharpIdeCodeEdit : CodeEdit
IPropertySymbol propertySymbol => SymbolInfoComponents.GetPropertySymbolInfo(propertySymbol),
IFieldSymbol fieldSymbol => SymbolInfoComponents.GetFieldSymbolInfo(fieldSymbol),
IParameterSymbol parameterSymbol => SymbolInfoComponents.GetParameterSymbolInfo(parameterSymbol),
//ILocalSymbol localSymbol => SymbolInfoComponents.GetLocalSymbolInfo(localSymbol),
ILocalSymbol localSymbol => SymbolInfoComponents.GetLocalVariableSymbolInfo(localSymbol),
_ => new Control()
};
popupPanel.AddChild(symbolInfoNode);

View File

@@ -0,0 +1,47 @@
using Godot;
using Microsoft.CodeAnalysis;
namespace SharpIDE.Godot.Features.CodeEditor;
public static partial class SymbolInfoComponents
{
public static Control GetLocalVariableSymbolInfo(ILocalSymbol 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("local variable ");
label.AddAccessibilityModifier(symbol);
label.AddStaticModifier(symbol);
label.AddVirtualModifier(symbol);
label.AddAbstractModifier(symbol);
label.AddOverrideModifier(symbol);
label.AddLocalVariableTypeName(symbol);
label.AddLocalVariableName(symbol);
label.Newline();
label.Pop(); // font
label.AddDocs(symbol);
label.Pop();
return label;
}
private static void AddLocalVariableTypeName(this RichTextLabel label, ILocalSymbol symbol)
{
label.PushColor(GetSymbolColourByType(symbol.Type));
label.AddText(symbol.Type.ToDisplayString(SymbolDisplayFormat.MinimallyQualifiedFormat));
label.Pop();
label.AddText(" ");
}
private static void AddLocalVariableName(this RichTextLabel label, ILocalSymbol symbol)
{
label.PushColor(CachedColors.White);
label.AddText(symbol.Name);
label.Pop();
}
}