2015-10-28 19 views
6

Ich versuche, eine einfache Einfärbung für Protokolldateien zu erstellen, jetzt wo es möglich ist, benutzerdefinierte Sprachen in Code (ich bin auf 0.9.2). Ich habe eine einfache .tmLanguage-Datei zum Einfärben des Buchstabens 'q' erstellt, nur zum Starten, aber nicht erfolgreich.So erstellen Sie eine einfache benutzerdefinierte Sprache Kolorisierung zu VS Code

Meine neue Sprache "log" ist korrekt mit der Dateierweiterung verknüpft, und ich kann sie auch manuell in Code auswählen, aber es findet keine Einfärbung statt. Ich habe das Gefühl, dass es damit zu tun hat, mit welchem ​​"Umfang" ich mein Muster verbinde, aber ich bin mir nicht sicher. Gibt es eine Liste mit einem gültigen Bereich zur Auswahl? Anfangs dachte ich, ich würde etwas Allgemeines verwenden, wie "Kommentar", um etwas Farbe zu bekommen, aber es scheint nicht zu funktionieren.

Hier ist meine .tmLanguage Datei:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
    <dict> 
     <key>scopeName</key> 
     <string>text.log</string> 

     <key>fileTypes</key> 
     <array> 
      <string>log</string> 
     </array> 

     <key>name</key> 
     <string>Log file</string> 

     <key>patterns</key> 
     <array> 
      <dict> 
       <key>match</key> 
       <string>q</string> 
       <key>name</key> 
       <string>comment</string> 
      </dict> 
     </array> 
    </dict> 
</plist> 

ich wahrscheinlich hier etwas Missverständnis bin, so ist jede Hilfe sehr geschätzt :-)

Antwort

5

Sie benötigen anstelle von statischen Strings reguläre Ausdrücke verwenden, um zu beschreiben das Muster:

<key>match</key> 
<string>q</string> <- This needs to be a regular expression 
<key>name</key> 
<string>comment</string> 

Ich biete ein nützlicheres Beispiel für eine Protokolldatei Highlighter. Es färbt Zahlen, Hinweise, Warnungen und Fehler in verschiedenen Farben. Die Regeln zur Identifizierung dieser Schlüsselwörter und Zahlen basieren auf regulären Ausdrücken.

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
    <dict> 
     <key>scopeName</key> 
     <string>text.log</string> 

     <key>fileTypes</key> 
     <array> 
      <string>log</string> 
     </array> 

     <key>name</key> 
     <string>Log file</string> 

     <key>patterns</key> 
     <array> 
      <dict> 
       <key>match</key> 
       <string>\b(?i:(hint|info|information))\b</string> 
       <key>name</key> 

       <string>info-token</string> 
      </dict>     
      <dict> 
       <key>match</key> 
       <string>\b(?i:(warning|warn))\b</string> 
       <key>name</key> 
       <string>warn-token</string> 
      </dict> 
      <dict> 
       <key>match</key> 
       <string>\b(?i:(Error|Failure|Fail))\b</string> 
       <key>name</key> 
       <string>error-token</string> 
      </dict> 
      <dict> 
       <key>match</key> 
       <string>\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\b</string> 
       <key>name</key> 
       <string>constant.numeric</string> 
      </dict>         
     </array> 
     <key>uuid</key> 
     <string>FF0550E0-3A29-11E3-AA6E-0800200C9A77</string> 
    </dict> 
</plist> 

Der Textmarker gibt ein Ergebnis wie folgt aus (unter Verwendung des Standard-Theme):

enter image description here

Ich habe keine offizielle Dokumentation über die verfügbaren Token finden (wie error-token, constant.numeric usw.). Aber es gibt eine Datei in %VSCODE_INSTALLATION%\resources\app\out\vs\languages\markdown\common\tokens.css. Es scheint alle verfügbaren Tokens usw. aufzulisten. Verwenden Sie es als Referenz, wenn Sie die Datei .tmLanguage erstellen.

Aber Achtung: Einige Themen verwenden nur die grundlegenden Token. Und einige andere Themen verwenden dieselbe Farbe für viele verschiedene Token. Daher sollten Sie den Highlighter häufig mit den häufigsten Themen testen, um zu sehen, ob das Ergebnis gut aussieht oder nicht.

Sie sollten auf jeden Fall diese Seite über Language Grammars besuchen, um mehr zu erfahren.

+0

Vielen Dank für Ihre nützliche Probe und Tipps über die Sprach Token, ich schätze es wirklich! Ihre Probe funktionierte direkt aus der Box, also verglich ich sie mit meiner grundlegenderen Datei und es stellte sich heraus, dass ich den ** uuid ** -Teil vermisste, und das verursachte die Probleme. Es funktioniert jetzt ganz gut :-) – emilast

+1

BTW, 'q' ist eigentlich eine gültige Regex, wenn auch eine sehr kurze ... Es war nur zum Testen, ich brauche nicht wirklich q: s in meinem Protokoll zu identifizieren Dateien :-) – emilast

+2

Ich extrahierte eine Liste der gültigen Sprache Tokens, es ist hier verfügbar: https://gist.github.com/vivainio/b89bd60a3f2c7bbb31f7e149d6cb8806 – vivainio

1

Wie @Woshi sagte, Sie brauchen reguläre Ausdrücke.

Wie für die Bereiche, die in der Regel mit den meisten Farbthemen arbeiten, werde ich Sie mit this answer verknüpfen. Beachten Sie, dass für den abzurufenden Bereich im Wörterbuch mit dem Schlüssel "name" angegeben werden muss.

+0

Danke, ich habe diese Seite gestern gefunden. Nützliche Lektüre, aber es stellte sich heraus, mein Problem war, dass ich die ** Uuid ** Daten vermisste. Mein Bereich Kommentar hat sich als gültig herausgestellt. – emilast

5

Wir haben gerade eine Spracherweiterung veröffentlicht, die die Farbgebung in das Ausgabefenster bringt. Im Grunde genommen macht es dasselbe wie die genehmigte Antwort in diesem Thread und fügt den Mime-Typ text/x-code-output hinzu, der vom Ausgabefeld verwendet wird.

holen kostenlos hier: https://marketplace.visualstudio.com/items?itemName=IBM.output-colorizer

Quelle hier: https://github.com/IBM-Bluemix/vscode-log-output-colorizer Bitte helfen Sie tragen! Bugs, Feature-Anfragen, Beiträge alle willkommen.

Hier sind einige Screenshots davon arbeiten:

enter image description here enter image description here enter image description here