dans les fichiers .tmTheme, la clé de portée définit la façon dont un élément est mis en surbrillance:
<dict>
<key>name</key>
<string>HTML: Attribute Values</string>
<key>scope</key>
<string>meta.tag string.quoted, meta.tag string.quoted constant.character.entity</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#FFFFFF</string>
<key>fontStyle</key>
<string></string>
<key>foreground</key>
<string>#2aa198</string>
</dict>
</dict>
où puis-je trouver une liste de toutes les étendues prises en charge par ces applications, afin de pouvoir créer mon propre style?
Malheureusement, il ne semble pas exister de liste aussi complète.
Cependant, si vous appuyez sur Maj + Ctrl + P dans SublimeText 2, la barre d'état en bas de l'écran affichera une liste complète de toutes les touches de portée qui s'appliquent au personnage immédiatement après la position de votre curseur.
Vous pouvez utiliser cette méthode pour trouver les clés d'étendue pour tout ce dont vous avez besoin dans SublimeText.
Copier/coller (mais convertir HTML en Markdown) à partir de la version actuelle de la section "Conventions de dénomination" du Guide de grammaire du langage TextMate:
comment
- pour les commentaires. line
- commentaires de ligne, nous nous spécialisons davantage afin que le type de caractère de début de commentaire puisse être extrait de la portée. double-slash
- // comment
double-dash
- -- comment
number-sign
- # comment
percentage
- % comment
block
- commentaires sur plusieurs lignes comme /* … */
et <!-- … -->
. documentation
- documentation intégrée.constant
- diverses formes de constantes. numeric
- ceux qui représentent des nombres, par ex. 42
, 1.3f
, 0x4AB1U
.character
- ceux qui représentent des caractères, par ex. <
, \e
, \031
. escape
- les séquences d'échappement comme \e
seraient constant.character.escape
.language
- constantes (généralement) fournies par le langage qui sont "spéciales" comme true
, false
, nil
, YES
, NO
, etc.other
- autres constantes, par exemple couleurs en CSS.entity
- une entité fait référence à une plus grande partie du document, par exemple un chapitre, une classe, une fonction ou une balise. Nous ne couvrons pas l'entité entière comme entity.*
(Nous utilisons meta.*
Pour cela). Mais nous utilisons entity.*
Pour les "espaces réservés" dans l'entité plus grande, par exemple si l'entité est un chapitre, nous utiliserions entity.name.section
pour le titre du chapitre. name
- nous nommons la plus grande entité. function
- le nom d'une fonction.type
- le nom d'une déclaration de type ou d'une classe.tag
- un nom de balise.section
- le nom est le nom d'une section/en-tête.other
- autres entités. inherited-class
- le nom de la superclasse/classe de base.attribute-name
- le nom d'un attribut (principalement dans les balises).invalid
- élément "invalide". illegal
- illégal, par exemple une esperluette ou un caractère inférieur à HTML (qui ne fait pas partie d'une entité/balise).deprecated
- pour les éléments obsolètes, par exemple en utilisant une fonction API obsolète ou en utilisant un style avec HTML strict.keyword
- mots-clés (lorsqu'ils ne font pas partie des autres groupes). control
- principalement lié au contrôle de flux comme continue
, while
, return
, etc.operator
- les opérateurs peuvent être textuels (par exemple or
) ou être des caractères.other
- autres mots clés.markup
- c'est pour les langages de balisage et s'applique généralement aux sous-ensembles plus importants du texte. underline
- texte souligné. link
- ceci est pour les liens, par commodité, il est dérivé de markup.underline
de sorte que s'il n'y a pas de règle de thème qui cible spécifiquement markup.underline.link
alors il héritera du style de soulignement.bold
- texte en gras (le texte fort et similaire doit de préférence être dérivé de ce nom).heading
- un en-tête de section. Fournissez éventuellement le niveau d'en-tête comme élément suivant, par exemple markup.heading.2.html
Pour <h2>…</h2>
En HTML.italic
- texte en italique (le texte souligné et similaire doit de préférence être dérivé de ce nom).list
- liste les éléments. numbered
- éléments de liste numérotés.unnumbered
- éléments de liste non numérotés.quote
- texte entre guillemets (parfois entre guillemets).raw
- texte textuel, par ex. listes de codes. Normalement, la vérification orthographique est désactivée pour markup.raw
.other
- autres constructions de balisage.meta
- la méta-étendue est généralement utilisée pour baliser de plus grandes parties du document. Par exemple, la ligne entière qui déclare une fonction serait meta.function
Et les sous-ensembles seraient storage.type
, entity.name.function
, variable.parameter
Etc. et seul ce dernier serait stylé. Parfois, la méta-partie de l'étendue sera utilisée uniquement pour limiter l'élément plus général qui est stylisé, la plupart du temps, les méta-étendues sont cependant utilisées dans les sélecteurs d'étendue pour l'activation des éléments du bundle. Par exemple, dans Objective-C, il existe une méta-étendue pour la déclaration d'interface d'une classe et l'implémentation, permettant aux mêmes déclencheurs de tabulation de se développer différemment, selon le contexte.storage
- ce qui concerne le "stockage". type
- le type de quelque chose, class
, function
, int
, var
, etc.modifier
- un modificateur de stockage comme static
, final
, abstract
, etc.string
- chaînes. quoted
- chaînes entre guillemets. single
- chaînes entre guillemets simples: 'foo'
.double
- chaînes entre guillemets doubles: "foo"
.triple
- triples chaînes entre guillemets: """Python"""
.other
- autres types de devis: $'Shell'
, %s{...}
.unquoted
- pour des choses comme here-docs et here-strings.interpolated
- chaînes qui sont "évaluées": date
, $(pwd)
.regexp
- expressions régulières: /(\w+)/
.other
- autres types de chaînes (devraient rarement être utilisées).support
- les éléments fournis par un framework ou une bibliothèque doivent être inférieurs à support
. function
- fonctions fournies par le framework/bibliothèque. Par exemple, NSLog
dans Objective-C est support.function
.class
- lorsque le framework/bibliothèque fournit des classes.type
- types fournis par le framework/bibliothèque, ceci n'est probablement utilisé que pour les langages dérivés de C, qui a typedef
(et struct
). La plupart des autres langues introduiraient de nouveaux types en tant que classes.constant
- constantes (valeurs magiques) fournies par le framework/bibliothèque.variable
- variables fournies par le framework/bibliothèque. Par exemple NSApp
dans AppKit.other
- ce qui précède devrait être exhaustif, mais pour tout le reste, utilisez support.other
.variable
- variables. Toutes les langues ne permettent pas une identification facile (et donc un balisage) de celles-ci. parameter
- lorsque la variable est déclarée comme paramètre.language
- variables de langue réservées comme this
, super
, self
, etc.other
- d'autres variables, comme $some_variables
.Il existe quelques packages de texte sublimes que vous pouvez utiliser pour ce faire.
Allez sur https://sublime.wbond.net/ et cliquez sur "Installation" et suivez les instructions pour installer le gestionnaire de package de texte sublime.
Je connais quelques paquets de texte sublimes qui affichent la portée actuelle dans la barre d'état.
Pour installer un package avec le gestionnaire de packages de texte sublime, ouvrez la palette de commandes de texte sublime (ctrl+shift+p
) et choisissez la commande Package Control: Install Package
, puis sélectionnez l'un des packages ci-dessus.
Les étendues proviennent de fichiers tmLanguage qui sont différents pour chaque syntaxe. Vous pouvez trouver une liste des conventions de dénomination des portées sur http://manual.macromates.com/en/language_grammars
En plus des excellentes réponses déjà publiées, l'onglet Statistiques des étendues de TMTheme Editor affiche une liste utile de toutes les étendues dans ses 236 thèmes de couleurs, avec les portées les plus couramment prises en charge en haut.
Voir un guide de référence sur le sublime site ci-dessous:
Chaque syntaxe peut nommer ses propres étendues, mais elles sont basées sur cette liste . Par exemple, votre syntaxe peut spécifier que function
est storage.type.function.js
portée. Si votre thème le prend en charge directement, il utilisera cette couleur, sinon il reviendra à storage.type.function
puis storage.type
puis enfin storage
en essayant de trouver une couleur dans votre thème.
Puisque vous créez votre propre style, je recommanderais d'installer ScopeStatus (CTRL+SHIFT+P, puis Installer le package, puis ScopeStatus). En regardant un fichier en utilisant la syntaxe sur laquelle vous souhaitez vous concentrer, faites CTRL+SHIFT+P, puis "Étendue: Afficher dans la barre d'état". Vous pouvez maintenant déplacer le curseur sur divers éléments pour voir quelle étendue ils donnent et vous pouvez les utiliser pour définir les couleurs.
Vous pouvez vérifier vos thèmes pour voir ce qu'ils font, allez dans "Préférences-> Parcourir les packages" pour ouvrir le dossier où vos packages sont stockés. J'ai installé "Theme - Phoenix" qui a un dossier et un dossier "Color Scheme" en dessous. Dans l'un des fichiers de thème, j'ai trouvé 16 couleurs utilisées pour diverses étendues:
keyword.operator.class, constant.other, source.php.embedded.line
variable, support.other.variable, string.other.link, entity.name.tag, entity.other.attribute-name, meta.tag, declaration.tag
constant.numeric, constant.language, support.constant, constant.character, variable.parameter, punctuation.section.embedded, keyword.other.unit
entity.name.class, entity.name.type.class, support.type, support.class
string, constant.other.symbol, entity.other.inherited-class, markup.heading
keyword.operator, constant.other.color
entity.name.function, meta.function-call, support.function, keyword.other.special-method, meta.block-level
keyword, storage, storage.type, entity.name.tag.css
invalid
meta.separator
invalid.deprecated
markup.inserted.diff, markup.deleted.diff, meta.diff.header.to-file, meta.diff.header.from-file
markup.inserted.diff, meta.diff.header.to-file
markup.deleted.diff, meta.diff.header.from-file
meta.diff.header.from-file, meta.diff.header.to-file
meta.diff.range
Différents thèmes peuvent avoir des paramètres différents, car keyword.operator.class dans le premier groupe peut avoir sa propre couleur ou être identique à meta.diff.range.