Cambiar idioma: English

Archivos .tmLanguage

Formato

Los archivos .tmLanguage usan el formato Plist. No obstante, en este texto se emplea JSON en los ejemplos. Para realizar la conversión entre JSON y Plist se puede utilizar AAAPackageDev_.

{ "name": "Sublime Snippet (Raw)",
  "scopeName": "source.ssraw",
  "fileTypes": ["ssraw"],
  "patterns": [
      { "match": "\\$(\\d+)",
        "name": "keyword.ssraw",
        "captures": {
            "1": { "name": "constant.numeric.ssraw" }
         },
        "comment": "Tab stops like $1, $2..."
      },
      { "match": "\\$([A-Za-z][A-Za-z0-9_]+)",
        "name": "keyword.ssraw",
        "captures": {
            "1": { "name": "constant.numeric.ssraw" }
         },
        "comment": "Variables like $PARAM1, $TM_SELECTION..."
      },
      { "name": "variable.complex.ssraw",
        "begin": "(\\$)(\\{)([0-9]+):",
        "beginCaptures": {
            "1": { "name": "keyword.control.ssraw" },
            "3": { "name": "constant.numeric.ssraw" }
         },
         "patterns": [
            { "include": "$self" },
            { "name": "string.ssraw",
              "match": "."
            }
         ],
         "end": "\\}"
      },
      { "name": "constant.character.escape.ssraw",
        "match": "\\\\(\\$|\\>|\\<)"
      },
      { "name": "invalid.ssraw",
        "match": "(\\$|\\>|\\<)"
      }
  ],
  "uuid": "ca03e751-04ef-4330-9a6b-9b99aae1c418"
}
name
Nombre descriptivo de la definición sintáctica. Aparece en el menú desplegable de definiciones sintácticas. Generalmente, es el nombre de un lenguaje de programación.
scopeName
Nombre del contexto raíz de la definición sintáctica. O source.<lenguaje>, o text.<lenguaje>. Usa source para lenguajes de programación y text para los demás casos.
fileTypes
Matriz de extensiones de tipo de archivo sin punto prefijado. La definición sintáctica se activará automáticamente cuando se abran archivos con estas extensiones.
uuid
Identificador inequívoco de la definición sintáctica. Obviado en la versión actual.
foldingStartMarker
Usado para ocultar regiones. Obviado en la versión actual.
foldingStopMarker
Usado para ocultar regiones. Obviado en la versión actual.
patterns
Matriz de expresiones regulares para procesar el texto del búfer.
repostitory
Optativo. Matriz de expresiones regulares. Útil para mantener la definición sintáctica legible y para aplicar técnicas complejas como las reglas recursivas.

El elemento patterns

Subelementos del elemento patterns.

match

Puede contener los siguientes elementos:

match Expresión regular.
name Nombre de contexto que se asignará a las coincidencias de match.
comment Optativo. Apunte informativo.
captures Optativo. Refinamiento de match.

A su vez, captures puede contener n de los siguientes pares de elementos:

0..n Nombre del grupo referenciado.
name Contexto que se asignará al grupo.

Ejemplos:

// Simple

{ "name": "constant.character.escape.ssraw",
  "match": "\\\\(\\$|\\>|\\<)"
  "comment". "Secuencias como \$, \> y \<"
}

// Con "captures"

{ "match": "\\$(\\d+)",
  "name": "keyword.ssraw",
  "captures": {
      "1": { "name": "constant.numeric.ssraw" }
   },
  "comment": "Campos como $1, $2..."
}
include

Incluye reglas del repositorio, de otras definiciones sintácticas, o la misma definición sintáctica que lo declara.

Referencias:

$self Definición sintáctica en uso.
#itemName Elemento del repositorio denominado itemName.
source.js Definición sintáctica externa.

Ejemplos:

// Requires presence of DoubleQuotedStrings element in the repository.
{ "include": "#DoubleQuotedStrings" }

// Recursively includes the current syntax definition.
{ "include": "$self" }

// Includes and external syntax definition.
{ "include": "source.js" }
begin..end

Define un contexto que puede abarcar varias líneas.

Contiene los siguientes elementos:

begin Expresión regular que marca el inicio del contexto.
end Expresión regular que marca el final del contexto.
name Nombre del contexto para toda la región.
beginCaptures Capturas para begin. Ver captures.
endCaptures Capturas para for end. Ver captures.
patterns Reglas para el contenido de la región.
contentName Nombre del contexto para el contenido excluyendo los marcadores.

Ejemplo:

{ "name": "variable.complex.ssraw",
  "begin": "(\\$)(\\{)([0-9]+):",
  "beginCaptures": {
      "1": { "name": "keyword.control.ssraw" },
      "3": { "name": "constant.numeric.ssraw" }
   },
   "patterns": [
      { "include": "$self" },
      { "name": "string.ssraw",
        "match": "."
      }
   ],
   "end": "\\}"
}

Repositorio

Referenciable desde patterns o desde sí mismo mediante elementos include. Ver include para obtener más información.

El repositorio puede contener los siguientes elementos:

Ejemplo de elemento simple:

"elementName": {
  "match":  "some regexp",
  "name":   "some.scope.somelang"
}

Ejemplo de elemento complejo:

"elementName": {
  "patterns": [
    { "match":  "some regexp",
      "name":   "some.scope.somelang"
    },
    { "match":  "other regexp",
      "name":   "some.other.scope.somelang"
    }
  ]
}

Ejemplos:

"repository": {
  "numericConstant": {
    "patterns": [
      { "match":  "\\d*(?<!\\.)(\\.)\\d+(d)?(mb|kb|gb)?",
        "name":   "constant.numeric.double.powershell",
        "captures": {
          "1": { "name": "support.constant.powershell" },
          "2": { "name": "support.constant.powershell" },
          "3": { "name": "keyword.other.powershell" }
          }
      },
      { "match":  "(?<!\\w)\\d+(d)?(mb|kb|gb)?(?!\\w)",
        "name":   "constant.numeric.powershell",
        "captures": {
          "1": { "name": "support.constant.powershell" },
          "2": { "name": "keyword.other.powershell" }
          }
      }
    ]
  },
  "scriptblock": {
    "begin":  "\\{",
    "end":    "\\}",
    "name":   "meta.scriptblock.powershell",
    "patterns": [
      { "include": "$self" }
    ]
  },
}

Secuencias de escape

Deben tenerse en cuenta las secuencias de escape requeridas por JSON (o, en su caso, XML).

Compatibilidad con Textmate

Los archivos .tmLanguage usados por Sublime Text son compatibles con los de Textmate.