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 @@ -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)));
}
}

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

@ -96,6 +96,12 @@ namespace ICSharpCode.NRefactory.CSharp @@ -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();
}
}

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

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

Loading…
Cancel
Save