From 8d657a3a1e0232348d00f92b87a0e6d4a403d058 Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Sat, 1 Feb 2014 15:58:31 +0100 Subject: [PATCH] add rich text tooltips for IVariable and IParameter --- .../Src/XmlDoc/XmlDocTooltipProvider.cs | 3 +-- .../OutputVisitor/CSharpAmbience.cs | 6 ++++++ src/Main/Base/Project/Editor/XmlDocFormatter.cs | 12 ++++++++++++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/XmlDoc/XmlDocTooltipProvider.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/XmlDoc/XmlDocTooltipProvider.cs index cb478049a7..44c4afb430 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/XmlDoc/XmlDocTooltipProvider.cs +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/XmlDoc/XmlDocTooltipProvider.cs @@ -46,8 +46,7 @@ namespace ICSharpCode.AvalonEdit.AddIn.XmlDoc } else if (mrr != null) { e.SetToolTip(CreateTooltip(mrr.Member)); } else if (lrr != null) { - var ambience = AmbienceService.GetCurrentAmbience(); - e.SetToolTip(ambience.ConvertSymbol(lrr.Variable)); + e.SetToolTip(new FlowDocumentTooltip(XmlDocFormatter.CreateTooltip(lrr.Variable))); } } diff --git a/src/Libraries/NRefactory/ICSharpCode.NRefactory.CSharp/OutputVisitor/CSharpAmbience.cs b/src/Libraries/NRefactory/ICSharpCode.NRefactory.CSharp/OutputVisitor/CSharpAmbience.cs index d5bad4a0dd..9af58c7788 100644 --- a/src/Libraries/NRefactory/ICSharpCode.NRefactory.CSharp/OutputVisitor/CSharpAmbience.cs +++ b/src/Libraries/NRefactory/ICSharpCode.NRefactory.CSharp/OutputVisitor/CSharpAmbience.cs @@ -96,6 +96,12 @@ namespace ICSharpCode.NRefactory.CSharp } else if (node is NamespaceDeclaration) { writer.WriteKeyword(Roles.NamespaceKeyword, "namespace"); writer.Space(); + } else if (symbol is IParameter) { + writer.WriteKeyword(Roles.NamespaceKeyword, "parameter"); + writer.Space(); + } else if (symbol is IVariable) { + writer.WriteKeyword(Roles.NamespaceKeyword, "local variable"); + writer.Space(); } } diff --git a/src/Main/Base/Project/Editor/XmlDocFormatter.cs b/src/Main/Base/Project/Editor/XmlDocFormatter.cs index b951ead7fb..79fd0fabd6 100644 --- a/src/Main/Base/Project/Editor/XmlDocFormatter.cs +++ b/src/Main/Base/Project/Editor/XmlDocFormatter.cs @@ -75,5 +75,17 @@ namespace ICSharpCode.SharpDevelop.Editor } return b.CreateFlowDocument(); } + + public static FlowDocument CreateTooltip(ISymbol symbol) + { + var ambience = AmbienceService.GetCurrentAmbience(); + ambience.ConversionFlags = ConversionFlags.StandardConversionFlags | ConversionFlags.ShowDeclaringType; + string header = ambience.ConvertSymbol(symbol); + + ambience.ConversionFlags = ConversionFlags.ShowTypeParameterList; + DocumentationUIBuilder b = new DocumentationUIBuilder(ambience); + b.AddCodeBlock(header, keepLargeMargin: true); + return b.CreateFlowDocument(); + } } }