Freigeben über


Syntaxfarben in benutzerdefinierten Editoren

Visual Studio Environment SDK-Editoren, einschließlich des Kern-Editors, verwenden Sprachdienste, um bestimmte syntaktische Elemente zu identifizieren und mit angegebenen Farben für eine bestimmte Dokumentansicht anzuzeigen.

Färbungsanforderungen

Alle Editoren, die den Farbizer eines Sprachdiensts implementieren, müssen:

  1. Verwenden Sie ein objekt, das implementiert IVsTextBuffer wird, um den text zu colorisieren, und ein Objekt IVsTextView , das implementiert wird, um eine Dokumentansicht des Texts bereitzustellen.

  2. Rufen Sie eine Schnittstelle zu einem bestimmten Sprachdienst ab, indem Sie den Dienstanbieter des VSPackage mithilfe der guiD des Sprachendiensts abfragen.

  3. Rufen Sie die SetLanguageServiceID Methode des implementierenden Objekts auf IVsTextBuffer. Diese Methode ordnet den Sprachdienst der IVsTextBuffer Implementierung zu, die vom VSPackage verwendet wird, um den text zu verwalten, der coloriert werden soll.

Core Editor Usage of a Language Service's Colorizer

Wenn ein Sprachdienst mit einem Colorizer von einer Instanz des Kern-Editors abgerufen wird, erfolgt die Analyse und das Rendern von Text durch den Farbizer eines Sprachdiensts automatisch, ohne dass weitere Eingriffe erforderlich sind.

Die IDE transparent:

  • Ruft den Colorizer nach Bedarf auf, um Text zu analysieren und zu analysieren, während er in der Implementierung hinzugefügt IVsTextBufferoder geändert wird.

  • Stellt sicher, dass die von der Implementierung bereitgestellte Anzeige der Von der IVsTextView Implementierung bereitgestellten Dokumentansicht aktualisiert und mithilfe der vom Farbizer zurückgegebenen Informationen aktualisiert und aktualisiert wird.

Nicht core Editor-Verwendung des Farbizers eines Sprachdiensts

Nicht core-Editorinstanzen können auch den Syntaxfarbisierungsdienst eines Sprachdiensts verwenden, aber sie müssen den Farbizer des Diensts explizit abrufen und anwenden und ihre Dokumentansichten selbst neu erstellen.

Dazu muss ein Nicht-Core-Editor:

  1. Rufen Sie das Colorizerobjekt eines Sprachdiensts IVsColorizer ab (das implementiert und IVsColorizer2). VsPackage führt dies durch Aufrufen der GetColorizer Methode für die Schnittstelle des Sprachdiensts aus.

  2. Rufen Sie die ColorizeLine Methode auf, um anzufordern, dass eine bestimmte Textspanne farbbar ist.

    Die ColorizeLine Methode gibt ein Array von Werten zurück, eines für jeden Buchstaben in der Textspanne, der farbige wird. Außerdem wird die Textspanne als ein bestimmter Typ farbiger Elemente identifiziert, z. B. ein Kommentar, Schlüsselwort (keyword) oder Datentyp.

  3. Verwenden Sie die Farbinformationen, die zurückgegeben ColorizeLine werden, um den Text neu zu überschreiben und anzuzeigen.

Hinweis

Zusätzlich zur Verwendung des Farbizers eines Sprachdiensts kann ein VSPackage den allgemeinen Visual Studio Environment SDK-Textfarbmechanismus verwenden. Weitere Informationen zu diesem Mechanismus finden Sie unter Verwenden von Schriftarten und Farben.