2017-10-13 3 views
2

Ich versuche, für Ribosome.py.dna DateienVSCode Python Language Extension

Grundsätzlich eine VSCode Erweiterung zu erstellen, .py.dna ist identisch mit Python, mit der Ausnahme, dass Zeilen, die mit . beginnen sollten Kommentar Syntax-Hervorhebung haben.

Bisher ist es das, was ich für meine tmLanguage.json haben:

{ 
    "name": "RibosomePython", 
    "patterns": [ 
     { 
      "include": "#dots" 
     } 
    ], 
    "repository": { 
     "dots": { 
      "name": "comment.dna", 
      "begin": "\\.", 
      "end": "$" 
     } 
    }, 
    "scopeName": "source.python.dna" 
} 

Dies funktioniert, dass Start-Linien mit . Python Kommentar Syntax-Hervorhebung haben. Aber jetzt bin ich mir nicht sicher, wie ich VSCode sagen soll, dass die echte Python-Grammatik alles andere hervorhebt. Wie kann ich das machen?

Mein package.json wie folgt aussieht:

{ 
    "name": "ribosome-dna", 
    "displayName": "Ribosome DNA", 
    "description": "Ribosome DNA Syntax Highlighting", 
    "version": "0.0.1", 
    "publisher": "rpgillespie", 
    "engines": { 
     "vscode": "^1.17.0" 
    }, 
    "categories": [ 
     "Languages" 
    ], 
    "contributes": { 
     "languages": [{ 
      "id": "dna", 
      "aliases": ["DNA"], 
      "extensions": [".py.dna"], 
      "configuration": "./language-configuration.json" 
     }], 
     "grammars": [ 
      { 
       "language": "dna", 
       "scopeName": "source.python.dna", 
       "path": "./syntaxes/dna.tmLanguage.json" 
      } 
     ] 
    } 
} 

Hinweis ich konnte es den Weg zur Arbeit ich durch Kopieren und Modifizieren von Python Grammatik aber dies scheint übertrieben wollte.

Edit:

Für die Neugierigen, fertigen Erweiterung veröffentlicht here.

Antwort

1

Fügen Sie einfach "include": "source.python" zu Ihrem patterns:

{ 
    "name": "RibosomePython", 
    "patterns": [ 
     { 
      "include": "#dots" 
     }, 
     { 
      "include": "source.python" 
     } 
    ], 
    "repository": { 
     "dots": { 
      "name": "comment.dna", 
      "begin": "\\.", 
      "end": "$" 
     } 
    }, 
    "scopeName": "source.python.dna" 
} 

Diese Funktion wird injection grammar genannt. VSCode hat als Antwort auf #2793 Unterstützung dafür hinzugefügt.

+0

Genau das, was ich gesucht habe. Ich hatte ein paar Variationen versucht, ohne Erfolg. – RPGillespie

Verwandte Themen