scope - instalar - sublime text desde cero
DefiniciĆ³n del alcance de los fragmentos de Sublime Text 2 personalizados (5)
Al intentar escribir mis propios fragmentos para Sublime Text 2, encontré los siguientes dos problemas:
Encontrar claves de alcance Descubrí que puedo revisar mis paquetes uno por uno y encontrar referencias a una propiedad de "alcance" declarada. Por ejemplo, en
~/Library/Application Support/Sublime Text 2/Packages/JavaScript/Comments.tmPreferences
(un archivo en mi paquete HTML), hay estas dos líneas:<key>scope</key> <string>source.js</string>
Entonces, si quiero que mi fragmento actual funcione en archivos javascript, defino mi alcance como:
<scope>source.js</scope>
Supongo que todas estas claves de alcance se definen sobre la marcha en función de los Paquetes que he instalado. ¿Sublime Text crea una lista en cualquier lugar que pueda hacer referencia más fácilmente? Examinar un montón de archivos de paquete parece demasiado tedioso.
Definición de múltiples propiedades de alcance Esto lo he descubierto, y la siguiente línea permite que mi fragmento funcione en archivos HTML y JavaScript.
<scope>text.html, source.js</scope>
Ver el alcance actual de la posición del cursor
- Coloque el cursor en el archivo donde desea conocer el alcance.
Use este atajo de teclado:
Windows : ctrl + shift + alt + p
Mac: ctrl + shift + pEl alcance actual se mostrará en el lado izquierdo de la barra de estado en Windows, o en una ventana emergente en Mac.
Úselos como la tecla <scope>
en su archivo foo.sublime-snippet
.
Los ámbitos devueltos se enumeran genéricos a específicos. Elija el (los) alcance (s) que mejor "alcancen" el fragmento hasta donde debería estar disponible para que se active la pestaña.
Aquí hay una lista de ámbitos para usar en los fragmentos 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 falta algo, agrégalo en este sentido: https://gist.github.com/4705378 .
En realidad, puede usar Ctrl + Alt + Shift + P (sin usar Scope Hunter) y le mostrará el alcance en la barra inferior en el lado izquierdo justo después de la información de Col / Line. Es una letra pequeña pero está allí.
Hay un paquete llamado Scope Hunter , de Isaac Muse , que es realmente útil para esto.
Puede mostrarle el alcance debajo de cualquier cursor en un documento, que he encontrado realmente útil al depurar mis propios fragmentos. A veces es muy detallado; un alcance de muestra de mi documento más adelantado:
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
(Envuelto para facilitar la lectura)
No hubiera podido encontrar eso si pasé una semana seleccionando SL2, pero este paquete lo obtiene en segundos. Muy recomendable.
Este nivel de detalle también significa que puede definir fragmentos de una manera muy granular, si lo desea. Por ejemplo, meta.function.environment.list.latex
corresponde ampliamente a listas en LaTeX, así que tengo un fragmento que inserta un nuevo /item
cuando presiono super + enter en un entorno de lista, pero nadie más. Puedo apuntar fragmentos con mucha más eficacia que con conjeturas ciegas.
El código fuente está en Github , o puede instalarlo a través de Package Control .
Para responder, n. ° 1, busque en el archivo .tmLanguage de la sintaxis, busque la clave: scopeName
. Esto es lo que utiliza la sintaxis para el valor del alcance del fragmento.
Por ejemplo, un extracto de nathos / sass-textmate-bundle
<key>scopeName</key>
<string>source.sass</string>
Entonces usaría source.sass
en su fragmento.
Aquí hay más información sobre cómo definir una sintaxis