Ich versuche derzeit, ein vorhandenes Resharper-Plug-in zu erweitern, das eine Syntaxhervorhebung für eine benutzerdefinierte Sprache enthält, und die aktuelle Sprachen-Schlüsselwort-Hervorhebung wird mit einer CSharpDaemonStageBase
implementiert, die eine benutzerdefinierte CSharpIncrementalDaemonStageProcessBase
erstellt.Resharper-Plugin-Hervorhebung schlägt bei bestimmten Typen fehl
Hervorhebungen durch zwingende VisitNode
wie so erreicht:
public override void VisitNode(ITreeNode node, IHighlightingConsumer context) {
base.VisitNode(node, context);
DocumentRange highlightingRange = node.GetHighlightingRange();
string highlightId = ...
if (highlightId != null)
context.AddHighlighting(new ICustomAttributeIdHighlighting_Impl(highlightId, highlightingRange));
}
highlightId
(theoretisch) eine vordefinierte Farbe in Visual Studio sein könnte, und der Knoten soll nach Visual Studio Optionen hervorgehoben bekommen. Leider scheinen einige dieser IDs nicht zu funktionieren und führen zu keinerlei Hervorhebung.
Dies sind einige von denen, kann ich bestätigen, werden mit MEF/der ReSharper Plugin (diese Arbeit richtig) richtig registriert:
- "HTML-Elementname"
- "HTML-Attribut Name"
- "HTML Attribut Wert"
- "Keyword"
- "Kommentar"
- "String"
- „Operator“
- „Nummer“
Diese Werte scheinen alle gültige Markierung Ergebnisse produzieren, jedoch würde Ich mag einige Klasse/Interface-Referenzknoten markieren, und ich nichts, was ich kann Ergebnisse in Sachen finden hervorgehoben werden. Einige der Variationen habe ich versucht, und verwenden möchten:
- „Benutzertypen“
- „Benutzertypen (Interfaces)“
- „Benutzertypen - Klassen“
- „Benutzertypen - Interfaces“
- "Klassenname"(irgendwo gelesen, dass dies der neue Name für VS2015 war, noch keine Würfel)
- "Schnittstellenname"
Soweit ich das beurteilen kann, sollte ich in der Lage sein, jeden String-Wert zurückzugeben, der im Visual Studio auf eine gültige Farbe abgebildet wird, aber aus irgendeinem Grund funktioniert keiner von diesen. Jemand, den ich kenne, hat vorgeschlagen, dass es ein Problem in VS/MEF sein könnte.
Danke für die Klarstellung. Schade, ich kann die ausgewählte Farbe des Benutzers nicht automatisch anpassen. – caesay
Sie können, indem Sie die ReSharper-Highlights verwenden - "ReSharper Class Identifier" usw. – citizenmatt
Die stimmen nicht überein - "ReSharper Class Identifier" in meiner Installation entspricht standardmäßig dem C++ - Hervorhebungsschema, aber nicht C#. – caesay