8 votes

Sublime Text 2 : construire un système de sélection personnalisé

Comment puis-je définir un sélecteur dans le système de construction avec l'extension personnalisée (comme *.ltx , *.cmake etc.) pour lesquels il n'y a pas de sélecteur disponible (comme text.tex.latex , source.c++ etc.)

Est-ce possible ? Si oui, comment ?

12voto

Greg Sadetsky Points 1263

C'est possible, si vous définissez une nouvelle définition syntaxique (c'est-à-dire un nouveau fichier .tmLanguage). Les définitions syntaxiques peuvent déclarer de nouveaux "noms de portée" que vous pouvez ensuite utiliser dans vos nouveaux systèmes de construction personnalisés.

Le nouveau fichier de définition de la syntaxe n'a pas besoin de définir/correspondre à la syntaxe du fichier, puisque vous pouvez simplement correspondre à l'extension du fichier... !

Jetez un coup d'œil aquí à la syntaxe du fichier .tmLanguage. L'élément "scopeName" vous permet de nommer votre nouveau scope (par exemple, "text.tex.latex", etc.). Je vais donner un exemple ci-dessous.


J'ai créé une nouvelle syntaxe qui définit une nouvelle portée -- c'était assez facile (comme la plupart des choses dans Sublime) :

  • Dans la palette de commandes, sélectionnez "Contrôle des paquets" : Installer un paquet
  • Dans la liste des paquets, sélectionnez "PackageDev".
  • Créez une nouvelle définition syntaxique en sélectionnant Outils > Paquets > Développement de paquets > Nouvelle définition syntaxique
  • Votre nouvelle définition de la syntaxe ressemblera à ceci :

    { "name": "Syntax Name", "scopeName": "source.syntax_name", "fileTypes": [""], "patterns": [ ], "uuid": "..." }

... remplacez "Syntax Name" par un nom descriptif, "source.syntax_name" par votre nouveau nom d'étendue, et remplissez "fileTypes" pour contenir une ou plusieurs extensions de fichiers. Par exemple :

"fileTypes": ["tex", "ltx"]

  • Enregistrer le fichier en utilisant une extension ".JSON-tmLanguage" sous Packages/User
  • Sélectionner Outils > Système de construction > Sélectionner Json pour tmLanguage
  • Sélectionner Outils > Construire

Vous avez terminé ! Tout nouveau fichier ayant l'une des extensions définies dans "fileTypes" activera la portée "scopeName".

Vous pouvez maintenant utiliser cette portée dans un nouveau fichier du système de construction ( Outils > Système de construction > Nouveau système de construction... )

Santé !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X