Définition de la scope des extraits de texte Sublime personnalisés 2

En essayant d’écrire mes propres extraits pour Sublime Text 2, j’ai rencontré les deux problèmes suivants:

  1. Recherche des clés de scope J’ai compris que je pouvais parcourir mes paquets un par un et trouver des références à une propriété déclarée “scope”. Par exemple, dans ~/Library/Application Support/Sublime Text 2/Packages/JavaScript/Comments.tmPreferences (un fichier dans mon package HTML), il y a ces deux lignes:

     scope source.js 

    Donc, si je veux que mon extrait de code courant fonctionne sur des fichiers javascript, je définis ma scope comme suit:

     source.js 

    Je suppose que toutes ces clés de scope sont définies à la volée en fonction des packages que j’ai installés. Est-ce que Sublime Text crée une liste où je peux me référer plus facilement? Parcourir un tas de fichiers de paquets semble trop fastidieux.

  2. Définition de plusieurs propriétés d’étendue . C’est ce que j’ai compris et la ligne suivante permet à mon extrait de travailler dans les fichiers HTML et JavaScript.

     text.html, source.js 

Afficher l’étendue actuelle de la position du curseur

  1. Placez votre curseur dans le fichier où vous souhaitez connaître la scope.
  2. Utilisez ce raccourci clavier:

    Windows : Ctrl + Maj + Alt + P
    Mac: ctrl + shift + p

  3. La scope actuelle sera affichée dans la partie gauche de la barre d’état sous Windows ou dans une fenêtre contextuelle sur Mac.

Utilisez-les comme clé dans votre fichier foo.sublime-snippet .

Les scopes renvoyées sont listées génériques à spécifiques. Choisissez la ou les scopes les mieux adaptées à l’extrait de code pour qu’il soit disponible pour le déclencheur de tabulation.

Voici une liste des étendues à utiliser dans les extraits de Sublime Text 2 –

 ActionScript: source.actionscript.2 AppleScript: source.applescript ASP: source.asp Batch FIle: source.dosbatch C#: source.cs C++: source.c++ Clojure: source.clojure CoffeeScript: source.coffee CSS: source.css D: source.d Diff: source.diff Erlang: source.erlang Go: source.go GraphViz: source.dot Groovy: source.groovy Haskell: source.haskell HTML: text.html(.basic) JSP: text.html.jsp Java: source.java Java Properties: source.java-props Java Doc: text.html.javadoc JSON: source.json Javascript: source.js BibTex: source.bibtex Latex Log: text.log.latex Latex Memoir: text.tex.latex.memoir Latex: text.tex.latex LESS: source.css.less TeX: text.tex Lisp: source.lisp Lua: source.lua MakeFile: source.makefile Markdown: text.html.markdown Multi Markdown: text.html.markdown.multimarkdown Matlab: source.matlab Objective-C: source.objc Objective-C++: source.objc++ OCaml campl4: source.camlp4.ocaml OCaml: source.ocaml OCamllex: source.ocamllex Perl: source.perl PHP: source.php Regular Expression(python): source.regexp.python Python: source.python R Console: source.r-console R: source.r Ruby on Rails: source.ruby.rails Ruby HAML: text.haml SQL(Ruby): source.sql.ruby Regular Expression: source.regexp RestructuredText: text.restructuredtext Ruby: source.ruby SASS: source.sass Scala: source.scala Shell Script: source.shell SQL: source.sql Stylus: source.stylus TCL: source.tcl HTML(TCL): text.html.tcl Plain text: text.plain Textile: text.html.textile XML: text.xml XSL: text.xml.xsl YAML: source.yaml 

S’il manque quelque chose, ajoutez-le dans cet aperçu https://gist.github.com/4705378 .

Il y a un paquet appelé Scope Hunter , d’ Isaac Muse , qui est vraiment utile pour cela.

Il peut vous montrer la scope sous n’importe quel curseur dans un document, ce que j’ai trouvé très utile lors du débogage de mes propres extraits. Parfois, c’est très détaillé; un exemple de scope de mon document principal:

 Scope: text.tex.latex meta.function.environment.list.latex meta.function.environment.general.latex meta.function.environment.math.latex ssortingng.other.math.block.environment.latex meta.group.braces.tex meta.space-after-command.latex 

(Enveloppé pour faciliter la lecture)

Je n’aurais pas été capable de trouver cela si je passais une semaine à choisir SL2, mais ce paquet le reçoit en quelques secondes. Hautement recommandé.

Ce niveau de détail signifie également que vous pouvez définir des extraits de manière très granulaire, si vous le souhaitez. Par exemple, meta.function.environment.list.latex correspond en gros aux listes de LaTeX, donc j’ai un extrait de code qui insère un nouvel \item lorsque j’appuie sur super + enter dans un environnement de liste, mais personne d’autre. Je peux cibler les snippets beaucoup plus efficacement qu’avec les devinettes aveugles.

Le code source se trouve dans Github ou vous pouvez l’installer via le contrôle des packages .

En fait, vous pouvez utiliser Ctrl + Alt + Shift + P (sans utiliser Scope Hunter) et cela vous montrera la scope de la barre inférieure à gauche après les informations Col / Ligne. C’est assez petit mais c’est là.

Pour répondre, # 1, regardez dans le fichier .tmLanguage de la syntaxe, recherchez la clé: scopeName . C’est ce que la syntaxe utilise pour la valeur de scope de l’extrait de code.

Par exemple, un extrait de nathos / sass-textmate-bundle

 scopeName source.sass 

Donc, vous utiliseriez source.sass dans votre extrait de source.sass .

Voici plus d’informations sur la définition d’une syntaxe