Browse Source

add rich text tooltips for IVariable and IParameter

pull/331/head
Siegfried Pammer 12 years ago
parent
commit
8d657a3a1e
  1. 3
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/XmlDoc/XmlDocTooltipProvider.cs
  2. 6
      src/Libraries/NRefactory/ICSharpCode.NRefactory.CSharp/OutputVisitor/CSharpAmbience.cs
  3. 12
      src/Main/Base/Project/Editor/XmlDocFormatter.cs

3
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/XmlDoc/XmlDocTooltipProvider.cs

@ -46,8 +46,7 @@ namespace ICSharpCode.AvalonEdit.AddIn.XmlDoc
} else if (mrr != null) { } else if (mrr != null) {
e.SetToolTip(CreateTooltip(mrr.Member)); e.SetToolTip(CreateTooltip(mrr.Member));
} else if (lrr != null) { } else if (lrr != null) {
var ambience = AmbienceService.GetCurrentAmbience(); e.SetToolTip(new FlowDocumentTooltip(XmlDocFormatter.CreateTooltip(lrr.Variable)));
e.SetToolTip(ambience.ConvertSymbol(lrr.Variable));
} }
} }

6
src/Libraries/NRefactory/ICSharpCode.NRefactory.CSharp/OutputVisitor/CSharpAmbience.cs

@ -96,6 +96,12 @@ namespace ICSharpCode.NRefactory.CSharp
} else if (node is NamespaceDeclaration) { } else if (node is NamespaceDeclaration) {
writer.WriteKeyword(Roles.NamespaceKeyword, "namespace"); writer.WriteKeyword(Roles.NamespaceKeyword, "namespace");
writer.Space(); 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();
} }
} }

12
src/Main/Base/Project/Editor/XmlDocFormatter.cs

@ -75,5 +75,17 @@ namespace ICSharpCode.SharpDevelop.Editor
} }
return b.CreateFlowDocument(); 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();
}
} }
} }

Loading…
Cancel
Save