httui-lang
httui-lang es la definición formal del formato de bloque .httui
— la sintaxis fenced que escribes dentro de runbooks. Shipea como:
- Una gramática tree-sitter para syntax highlighting en cualquier editor que soporte tree-sitter
- Un servidor LSP (
httui-lsp) con autocomplete, hover, go-to-definition y diagnostics para referencias - Extensiones de editor para VS Code, Neovim, Zed, Helix y más
La desktop app y el TUI ambos embeben httui-lang internamente. El tooling standalone te deja obtener la misma experiencia en cualquier editor que hable LSP — sin dejar tu workflow habitual.
Qué problema resuelve esto
Sección titulada «Qué problema resuelve esto»Ya puedes usar httui abriendo la desktop app. ¿Entonces por qué tener un lenguaje y un LSP?
| Sin httui-lang | Con httui-lang |
|---|---|
| Editar runbooks solo en la desktop app de httui | Editarlos en VS Code / Neovim / Zed con autocomplete completo |
| Sin syntax highlight en GitHub, Obsidian, etc | Gramática tree-sitter → highlight estándar en todos lados |
Hover un {{ref}} fuera de httui — es solo texto | El servidor LSP resuelve y muestra el valor |
httui-lang es invisible | Publicable a cualquier package registry — otros pueden construir tooling |
La apuesta: los runbooks son valiosos como formato, no solo como algo que abres en nuestra app. Hacer al lenguaje y al tooling first-class significa que el formato puede sobrevivir a la app — exactamente como markdown en sí.
Las cuatro partes
Sección titulada «Las cuatro partes»Sabor rápido
Sección titulada «Sabor rápido»Un archivo .httui (o un bloque de runbook .md — misma sintaxis)
abierto en VS Code con la extensión instalada:
http alias=login timeout=5000POST {{BASE_URL}}/auth/loginContent-Type: application/json
{ "user": "alice" }
# expect:# status == 200# time < 500msQué te da el LSP:
- Hover
{{BASE_URL}}→ “resolved tohttps://staging-api.example.com(env: staging)” - Hover
{{login.body.token}}→ muestra el valor capturado si está cacheado, o “no cache — el bloque no se ejecutó” Cmd+Click{{login.body.token}}→ salta a la definición del alias del bloquelogin- Tipea
{{→ autocomplete lista aliases arriba + env vars del env activo - Escribes mal un alias → squiggly underline, “unknown alias
loginn”
Status por editor
Sección titulada «Status por editor»| Editor | Tree-sitter | LSP | Status |
|---|---|---|---|
| VS Code | sí | sí | disponible — extensión del marketplace |
| Neovim | sí (vía nvim-treesitter) | sí | disponible — ejemplo de config abajo |
| Zed | sí | sí | disponible — extensión de Zed |
| Helix | sí | sí | disponible — config languages.toml |
| IntelliJ | parcial | parcial | planeado — gramática TextMate + LSP manual |
| Sublime | parcial | parcial | planeado — paquete LSP-* |
Ve la página de cada editor para el comando de install y el snippet de config.
Standalone vs embebido
Sección titulada «Standalone vs embebido»| Estás usando | Qué obtienes | Source |
|---|---|---|
| desktop app de httui | Comportamiento LSP completo, pero embebido — no visible | httui-lsp está statically linked |
| httui-tui (terminal) | Igual que desktop | Igual |
| VS Code con la extensión | Mismas capacidades LSP, en el editor de VS Code | La extensión descarga el binario httui-lsp |
| Otros editores LSP-aware | Igual — apunta al binario en tu languages.toml / equivalente | Instalas httui-lsp una vez |
El servidor LSP es el mismo binario ya sea que lo shipees como
parte de la desktop app o lo instales standalone vía
cargo install httui-lsp (o el package manager del editor).
Extensiones de archivo
Sección titulada «Extensiones de archivo»| Pattern del archivo | Qué hace el LSP |
|---|---|
*.httui | Trata todo el archivo como un runbook .httui (cada línea es parte de uno o más bloques) |
*.md con fences http / db-* | Inyecta comportamiento LSP solo dentro de las regiones fenced; el resto queda como markdown |
El modo dual significa que puedes mantener tus runbooks .md
existentes y crear archivos .httui standalone (sin wrapper de
markdown) cuando no necesitas la capa de prosa.