2017-10-13 1 views
2

Je suis en train de créer une extension de VSCode pour Ribosome.py.dna fichiersVSCode Python Langue Extension

Fondamentalement, .py.dna est identique à python, sauf que les lignes qui commencent par . devraient avoir un commentaire coloration syntaxique.

Jusqu'à présent, voici ce que j'ai pour mon tmLanguage.json:

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

Cela fonctionne, en ce que les lignes commençant par . ont la coloration syntaxique de commentaires python. Mais maintenant je ne sais pas comment dire à VSCode d'avoir la vraie grammaire Python sur tout le reste. Comment puis-je faire ceci?

Mon package.json ressemble:

{ 
    "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" 
      } 
     ] 
    } 
} 

Remarque J'ai pu faire fonctionner la façon dont je voulais en copiant et en modifiant la grammaire de python, mais cela semble exagéré.

Edit:

Pour l'extension curieuse, fini publié here.

Répondre

1

Il suffit d'ajouter à votre "include": "source.python"patterns:

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

Cette fonction est appelée injection grammar. VSCode a ajouté le support pour cela en réponse à #2793.

+0

Exactement ce que je cherchais. J'avais essayé quelques variations sur cela en vain. – RPGillespie