manager - ¿Dónde encontrar una lista de ámbitos para Sublime2(o textMate?)
sublime text packages manager (7)
Además de las excelentes respuestas ya publicadas, la pestaña Estadísticas de ámbitos del Editor de TMTheme muestra una lista útil de todos los ámbitos en sus 236 temas de color, con los ámbitos más comúnmente admitidos en la parte superior.
en los archivos .tmTheme, la clave de alcance define cómo se resalta un elemento:
<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>
¿Dónde puedo encontrar una lista de todos los ámbitos admitidos por estas aplicaciones, para poder crear mi propio estilo?
Cada sintaxis puede nombrar sus propios ámbitos, pero se basan fuera de https://www.sublimetext.com/docs/3/scope_naming.html . Por ejemplo, su sintaxis podría especificar que la function
es scope de storage.type.function.js
. Si su tema lo admite directamente, usará ese color; de lo contrario, recurrirá a storage.type.function
luego storage.type
y finalmente al storage
tratando de encontrar un color en su tema.
Como está creando su propio estilo, le recomiendo que instale ScopeStatus ( CTRL + SHIFT + P , luego Install Package, luego ScopeStatus). Al mirar un archivo usando la sintaxis en la que desea concentrarse, haga CTRL + MAYÚS + P , luego "Alcance: Mostrar en la barra de estado". Ahora puede mover el cursor a varios elementos para ver qué alcance le dan y puede usarlos para definir colores.
Puede consultar sus temas para ver lo que hacen, vaya a "Preferencias-> Buscar paquetes" para abrir la carpeta donde se almacenan sus paquetes. Instalé "Theme - Phoenix" que tiene una carpeta y una carpeta "Color Scheme" debajo. En uno de los archivos de tema encontré 16 colores que se usaron para varios ámbitos:
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
Diferentes temas pueden tener diferentes configuraciones, para keyword.operator.class en el primer grupo puede tener su propio color o ser lo mismo que meta.diff.range.
Copiar / pegar (pero convirtiendo HTML en Marcado) de la versión actual de la sección "Convenciones de nombres" de la Guía de gramática del lenguaje TextMate :
-
comment
- para comentarios.-
line
-line comments, nos especializamos aún más para que el tipo de carácter (s) de inicio de comentario se pueda extraer del alcance.-
double-slash
-// comment
-
double-dash
--- comment
-
number-sign
-# comment
-
percentage
-% comment
- carácter - otros tipos de comentarios de línea.
-
-
block
- comentarios de varias líneas como/* … */
y<!-- … -->
.-
documentation
-documentation
incrustada.
-
-
-
constant
- varias formas de constantes.-
numeric
: los que representan números, por ejemplo,42
,1.3f
,0x4AB1U
. -
character
: los que representan caracteres, por ejemplo<
,/e
,/031
.-
escape
- las secuencias de escape como/e
seríanconstant.character.escape
.
-
-
language
- constantes (generalmente) proporcionadas por el idioma que son "especiales" comotrue
,false
,nil
,YES
,NO
, etc. -
other
- otras constantes, por ejemplo, colores en CSS.
-
-
entity
: una entidad se refiere a una parte más grande del documento, por ejemplo, un capítulo, clase, función o etiqueta. No abarcamos la entidad completa comoentity.*
(Utilizamosmeta.*
Para eso). Pero usamosentity.*
Para los "placeholders" en la entidad más grande, por ejemplo, si la entidad es un capítulo,entity.name.section
para el título del capítulo.-
name
- estamos nombrando la entidad más grande.-
function
- el nombre de una función. -
type
: el nombre de una declaración o clase de tipo. -
tag
- un nombre de etiqueta. -
section
: el nombre es el nombre de una sección / encabezado.
-
-
other
- otras entidades.-
inherited-class
- la superclase / nombre de la clase base. -
attribute-name
: el nombre de un atributo (principalmente en etiquetas).
-
-
-
invalid
: material que es "inválido".-
illegal
- ilegal, por ejemplo, un ampersand o un carácter inferior al de HTML (que no es parte de una entidad / etiqueta). -
deprecated
- por cosas obsoletas, por ejemplo, usando una función API que está en desuso o usando el estilo con HTML estricto.
-
-
keyword
- palabras clave (cuando estas no caen en los otros grupos).-
control
- relacionado principalmente con control de flujo comocontinue
,while
,return
, etc. -
operator
: los operadores pueden ser textuales (por ejemplo,or
) o ser caracteres. -
other
- otras palabras clave.
-
-
markup
: esto es para lenguajes de marcado y generalmente se aplica a subconjuntos más grandes del texto.-
underline
- texto subrayado.-
link
: esto es para enlaces, como conveniencia esto se deriva demarkup.underline
modo que si no hay una regla de tema que semarkup.underline.link
específicamente amarkup.underline.link
, heredará el estilo de subrayado.
-
-
bold
- texto en negrita (el texto que es fuerte y similar preferiblemente debe derivarse de este nombre). -
heading
- un encabezado de sección. Opcionalmente, proporcione el nivel del encabezado como el siguiente elemento, por ejemplomarkup.heading.2.html
para<h2>…</h2>
en HTML. -
italic
- texto en cursiva (el texto enfatizado y similar se debe derivar preferiblemente de este nombre). -
list
- list items.-
numbered
numerados de la lista. -
unnumbered
numerar: elementos de lista sin numerar.
-
-
quote
- texto citado (a veces bloqueado). -
raw
formato - texto que es literal, por ejemplo, listados de códigos. Normalmente, la revisión ortográfica está deshabilitada paramarkup.raw
. -
other
- otras construcciones de marcado.
-
-
meta
: el meta-scope se usa generalmente para marcar partes más grandes del documento. Por ejemplo, la línea completa que declara una función seríameta.function
y los subconjuntos seríanentity.name.function
,entity.name.function
,variable.parameter
etc. y solo el último se diseñaría. Algunas veces, la metapartición del alcance se usará solo para limitar el elemento más general que se diseña, pero la mayoría de las veces se utilizan los metaconceptos en los selectores de alcance para la activación de los elementos del paquete. Por ejemplo, en Objective-C hay un meta-scope para la declaración de interfaz de una clase y la implementación, lo que permite que los mismos disparadores de tabulación se expandan de manera diferente, dependiendo del contexto. -
storage
: cosas relacionadas con el "almacenamiento".-
type
- el tipo de algo,class
,function
,int
,var
, etc. -
modifier
- un modificador de almacenamiento comostatic
,final
,abstract
, etc.
-
-
string
- cuerdas.-
quoted
- cadenas entre comillas.- cadenas simples entre comillas simples:
''foo''
. - cadenas dobles entre comillas dobles:
"foo"
. - cadenas
triple
- triples entre comillas:"""Python"""
. -
other
- otros tipos de cotización:$''shell''
,%s{...}
.
- cadenas simples entre comillas simples:
-
unquoted
- para cosas como here-docs y here-strings. -
interpolated
- cadenas que son "evaluadas":date
,$(pwd)
. - expresiones regulares: expresiones regulares:
/(/w+)/
. -
other
- otros tipos de cadenas (raramente deberían usarse).
-
-
support
: las cosas proporcionadas por un marco o biblioteca deben estar por debajo delsupport
.-
function
- funciones proporcionadas por el marco / biblioteca. Por ejemplo,NSLog
en Objective-C essupport.function
. -
class
- cuando el marco / biblioteca proporciona clases. -
type
- tipos proporcionados por el framework / biblioteca, esto probablemente solo se use para lenguajes derivados de C, que tienetypedef
(ystruct
). La mayoría de los otros idiomas introducirían nuevos tipos como clases. -
constant
- constantes (valores mágicos) proporcionados por el marco / biblioteca. -
variable
- variables proporcionadas por el marco / biblioteca. Por ejemploNSApp
enNSApp
. -
other
- lo anterior debe ser exhaustivo, pero para todo lo demás usesupport.other
.
-
-
variable
- variables. No todos los idiomas permiten una fácil identificación (y, por lo tanto, el marcado) de estos.-
parameter
- cuando la variable se declara como el parámetro. -
language
- variables de lenguaje reservadas comothis
,super
,self
, etc. -
other
- otras variables, como$some_variables
.
-
Desafortunadamente, no parece haber una lista tan completa.
Sin embargo, si presiona Shift + Ctrl + P en SublimeText 2, la barra de estado en la parte inferior de la pantalla mostrará una lista completa de todas las teclas de alcance que se aplican al personaje inmediatamente después de la posición del cursor.
Puede usar este método para buscar las teclas de alcance para cualquier cosa que necesite desde SublimeText.
Hay un par de paquetes de texto sublimes que puede usar para hacer esto.
Instalación del control de paquetes
Vaya a https://sublime.wbond.net/ y haga clic en "Instalación" y siga las instrucciones para instalar el sublime administrador de paquetes de texto.
Paquetes que muestran el alcance actual
Sé de un par de paquetes de texto sublimes que muestran el alcance actual en la barra de estado.
- ScopeStatus (Sublime Text 2 solamente)
- ScopeHunter
- Alcance siempre (Creado por mí)
- CurrentScope (Sublime Text 2 solamente)
Instalación de uno de los paquetes anteriores
Para instalar un paquete con el sublime administrador de paquetes de texto, abra la paleta de comandos de texto sublime ( ctrl+shift+p
) y elija el comando Package Control: Install Package
y luego seleccione uno de los paquetes anteriores.
Los ámbitos provienen de archivos tmLanguage que son diferentes para cada sintaxis. Puede encontrar una lista de convenciones de nomenclatura de ámbito en http://manual.macromates.com/en/language_grammars
Vea una guía de referencia en el sitio sublime a continuación: