web-dev-qa-db-fra.com

Définition de la portée des extraits de texte Sublime Text 2 personnalisés

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 portée. J'ai compris que je pouvais parcourir mes packages 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:

    <key>scope</key>
    <string>source.js</string>
    

    Donc, si je veux que mon extrait de code actuel fonctionne sur des fichiers javascript, je définis ma portée comme:

    <scope>source.js</scope>
    

    Je suppose que toutes ces clés de portée sont définies à la volée en fonction des packages que j'ai installés. Sublime Text crée-t-il une liste n'importe où que je peux plus facilement référencer? Parcourir un tas de fichiers de packages semble trop fastidieux.

  2. Définition de plusieurs propriétés d'étendue. J'ai compris cela et la ligne suivante permet à mon extrait de code de fonctionner à la fois dans les fichiers HTML et JavaScript.

    <scope>text.html, source.js</scope>
    
65
James Heston

Afficher l'étendue actuelle de la position du curseur

  1. Placez votre curseur dans le fichier dont vous souhaitez connaître la portée.
  2. Utilisez ce raccourci clavier:

    Windowsctrl+shift+alt+p
    Mac: ctrl+shift+p

  3. La portée actuelle sera affichée dans le côté gauche de la barre d'état sous Windows ou dans une fenêtre contextuelle sous Mac.

Utilisez-les comme <scope> entrez votre foo.sublime-snippet fichier.

Les étendues renvoyées sont répertoriées de générique à spécifique. Choisissez la ou les étendues qui ont le mieux "délimité" l'extrait de code à l'endroit où il devrait être disponible pour le déclenchement par tabulation.

76
Joseph Knight

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

Si quelque chose manque, ajoutez-le dans ce Gist https://Gist.github.com/4705378 .

145
Bibhas Debnath

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

Il peut vous montrer l'étendue 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 portée de mon premier document:

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

(Enveloppé pour faciliter la lecture)

Je n'aurais pas pu trouver cela si j'avais passé une semaine à choisir SL2 séparément, mais ce package le récupérait 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, le meta.function.environment.list.latex correspond largement aux listes dans LaTeX, j'ai donc un extrait qui insère un nouveau \item lorsque j'appuie sur super + entrée dans un environnement de liste, mais personne d'autre. Je peux cibler des extraits beaucoup plus efficacement qu'avec des suppositions aveugles.

Le code source est dans Github , ou vous pouvez l'installer via Package Control .

9
alexwlchan

En fait, vous pouvez utiliser Ctrl + Alt + Maj + P (sans utiliser Scope Hunter) et il vous montrera la portée dans la barre inférieure sur le côté gauche juste après les informations Col/Line. C'est assez petit mais c'est là.

7
Chuck

Pour répondre, # 1, cherchez dans le fichier de syntaxe . TmLanguage , cherchez la clé: scopeName. C'est ce que la syntaxe utilise pour la valeur de portée de l'extrait.

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

<key>scopeName</key>
<string>source.sass</string>

Vous utiliserez donc source.sass dans votre extrait.

Voici plus d'informations sur définition d'une syntaxe

5
d_rail