Docs · ide/textmate

VS Code

El módulo ide/textmate del repositorio JonDotsoy/don contiene una gramática TextMate y su configuración de lenguaje. Sirve para VS Code, Kiro o cualquier editor que consuma gramáticas TextMate, y da resaltado de sintaxis a los archivos .don y .donly.

Instalación

La extensión se publica en el Marketplace como jondotsoy.don-textmate.

$ code --install-extension jondotsoy.don-textmate

También puedes usar la carpeta como extensión sin empaquetar o copiarla en ~/.vscode/extensions/.

Qué incluye

Scopes

La gramática cubre directivas, bloques, identifiers, strings, números (entero, decimal, hex, octal, binario y bigint), booleanos, null, heredocs y comentarios.

Scope Elemento
entity.name.function.directive.don Nombre de la directiva
variable.parameter.don Argumentos sin comillas (identifiers)
string.quoted.double.don / string.quoted.single.don Strings
constant.character.escape.don Secuencias de escape (\" y \')
constant.numeric.{integer,decimal,hex,octal,binary,bigint}.don Números
constant.language.boolean.don true y false
constant.language.null.don null
keyword.operator.heredoc.don El operador <<<
entity.name.tag.heredoc-descriptor.don Delimitador del heredoc
string.unquoted.heredoc.don Contenido del heredoc
punctuation.section.block.{begin,end}.don Llaves { y }
comment.line.number-sign.don / comment.block.don Comentarios # y /* */

Configuración del lenguaje

Validación y pruebas

Desde la raíz del repositorio, la validación estructural revisa que el JSON sea válido, que cada expresión regular compile y que la regla de nombre de directiva coincida con los ejemplos:

$ bun ide/textmate/scripts/validate-grammar.ts

Las pruebas de scopes usan el motor real vscode-textmate y comprueban las aserciones de cada archivo tests/unit/*.test.don:

$ cd ide/textmate
$ bun install
$ bunx vscode-tmgrammar-test 'tests/unit/**/*.test.don'

Publicación

Se empaqueta y publica con @vscode/vsce:

$ bunx vsce package
$ bunx vsce publish --pat "$VSCE_PAT"

Un workflow de CI automatiza la publicación: valida la gramática, empaqueta el .vsix, lo publica y lo adjunta al release textmate-v<version>. Se omite si ese release ya existe y requiere el secreto VSCE_PAT.

Ejemplo

app.donly
# Comentario
name "my-application"
port 0x1F90
enabled true

server {
  host 'example.com'
  banner <<<TEXT
    Welcome
}