Cambiar idioma: English

Archivos .sublime-build

Los archivos .sublime-build permiten procesar archivos mediante programas externos y ver el texto que estos emiten. En definitiva, son una llamada a subprocess.Popen().

En estos archivos se especifica la configuración que se quiere proporcionar a un programa externo: las opciones, interruptores y datos de entorno necesarios para obtener de él el resultado deseado.

Optativamente, se puede modificar el funcionamiento de este proceso. Por ejemplo, se podría implementar completamente mediante un complemento de Sublime Text, en Python, sin recurrir a ningún programa externo. Esto es posible porque el mecanismo predefinido no es más que otro complemento situado en Packages/Default/exec.py.

Formato

Los archivos .sublime-build usan JSON. Veamos un ejemplo:

{
    "cmd": ["python", "-u", "$file"],
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "selector": "source.python"
}

Opciones

cmd

Requerido. Este elemento especifica la lista de cadenas que, combinadas, componen la línea de instrucciones. Si no se indica la ruta completa al programa externo, este debe ser visible en PATH. PATH es una de las variables de entorno del sistema operativo.

Note

En Windows se ocultan las interfaces gráficas.

file_regex
Optativo. Expresión regular (tipo Perl) para capturar errores emitidos por cmd.
line_regex
Optativo. Expresión regular (tipo Perl). Si la búsqueda con file_regex es negativa en la línea actual, pero existe line_regex y la búsqueda con ella es positiva, se retrocede en el búfer hasta encontrar una línea que concuerde con file_regex. Si la hay, se combina la información extraída con las dos expresiones regulares para determinar el archivo y la línea del error.
selector
Optativo. Si Tools | Buils System | Automatic está activada, se utiliza para buscar el archivo .sublime-build apropiado para el búfer activo comparando el valor de selector con el contexto del búfer.
working_dir
Optativo. Directorio al que se cambiará el directorio actual antes de ejecutar cmd. Cuando cmd termina, se restablece el anterior directorio actual.
encoding
Optativo. Codificación del resultado emitido por cmd. Debe ser una codificación válida para Python. Por omisión se emplea UTF-8.
target
Optativo. Instrucción de Sublime Text que se ejectuará. Por omisión se emplea exec (Packages/Default/exec.py). La instrucción target recibe todos los demás datos especificados en el archivo .sublime-build.
env
Optativo. Diccionario de variables de entorno que se combinarán con las del proceso en ejecución para pasárselas a cmd.
shell
Optativo. Si es true, cmd será invocado mediante el intérprete de instrucciones (cmd.exe, bash…).
path
Optativo. Cadena que remplazará temporalmente PATH en el proceso en ejecución antes de invocar cmd. El valor original de PATH será restablecido posteriormente. Este elemento es útil para añadir directorios a PATH que no están en el valor de PATH de uso general en el sistema operativo.

Captura de mensajes de error con file_regex

El elemento file_regex especifica una expresión regular compatible con Perl para extraer hasta cuatro campos de información de error del resultado que emite el programa invocado por el archivo .sublime-build. Por orden, estos son los campos que se extraen: nombre del archivo, número de línea, número de columna y mensaje de error. Utiliza grupos en la expresión regular para capturar estos datos. Los campos nombre del archivo y número de línea son obligatorios.

Si se logra extraer información de errores, podrás navegar por ellos en los archivos con f4 y Shift+f4. Si se extrae un mensaje de error, se mostrará en la barra de estado cuando estés sobre el error correspondiente.

Opciones específicas de cada plataforma

Las opciones windows, osx y linux permiten especificar parámetros aplicables únicamente a la plataforma correspondiente. Veamos un ejemplo:

{
    "cmd": ["ant"],
    "file_regex": "^ *\\[javac\\] (.+):([0-9]+):() (.*)$",
    "working_dir": "${project_path:${folder}}",
    "selector": "source.java",

    "windows":
    {
        "cmd": ["ant.bat"]
    }
}

En este caso, ant se ejecutará en todas plataformas salvo en Windows, donde se usará ant.bat en su lugar.

Variables

Los archivos de configuración tienen acceso a las siguientes variables:

$file Ruta completa al archivo activo (C:\Files\Chapter1.txt).
$file_path Directorio del archivo activo (C:\Files).
$file_name Nombre y extensión del archivo activo (Chapter1.txt).
$file_extension Extensión del archivo activo (txt).
$file_base_name Nombre del archivo activo (Chapter1).
$packages Ruta completa al directorio Packages.
$project Ruta completa al archivo de proyecto activo.
$project_path Directorio del proyecto activo.
$project_name Nombre y extensión del archivo de proyecto activo.
$project_extension Extensión del archivo de proyecto activo.
$project_base_name Nombre del archivo de proyecto activo.

Valores predefinidos para las variables

Se puede emplear una syntaxis similar a la de las plantillas:

${project_name:Default}

En este ejemplo, se emite el nombre del archivo de proyecto o Default en su defecto.

${file/\.php/\.txt/}

Esta variante sustituye .php por .txt en la ruta del archivo activo.

Cómo usar achivos .sublime-build

Una vez elegido el archivo .sublime-build apropiado en Tools | Build System, selecciona Tools | Build o pulsa f7.

Solución de problemas

Los programas externos invocados mediante archivos .sublime-build deben ser visibles en PATH. Esto se puede comprobar fácilmente tratando de ejecutar el mismo programa desde la línea de instrucciones del sistema operativo (bash, cmd…). Sin embargo, debe tenerse en cuenta que la variable PATH usada por la línea de instrucciones podría ser diferente a la empleada por Sublime Text debido al perfil de la línea de instrucciones.

Recuerda que es posible modificar temporalmente el valor de la variable PATH recibida por la instrucción cmd mediante el elemento path de los archivos .sublime-build. Este método no requiere cambios en la configuración de tu sistema operativo.

See also

Gestión de las variables de entorno en Windows
Resultados de Microsoft acerca de este tema.