Ir al contenido

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.

Ya puedes usar httui abriendo la desktop app. ¿Entonces por qué tener un lenguaje y un LSP?

Sin httui-langCon httui-lang
Editar runbooks solo en la desktop app de httuiEditarlos en VS Code / Neovim / Zed con autocomplete completo
Sin syntax highlight en GitHub, Obsidian, etcGramática tree-sitter → highlight estándar en todos lados
Hover un {{ref}} fuera de httui — es solo textoEl servidor LSP resuelve y muestra el valor
httui-lang es invisiblePublicable 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í.

Un archivo .httui (o un bloque de runbook .md — misma sintaxis) abierto en VS Code con la extensión instalada:

auth-flow.httui
http alias=login timeout=5000
POST {{BASE_URL}}/auth/login
Content-Type: application/json
{ "user": "alice" }
# expect:
# status == 200
# time < 500ms

Qué te da el LSP:

  • Hover {{BASE_URL}} → “resolved to https://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 bloque login
  • Tipea {{ → autocomplete lista aliases arriba + env vars del env activo
  • Escribes mal un alias → squiggly underline, “unknown alias loginn
EditorTree-sitterLSPStatus
VS Codedisponible — extensión del marketplace
Neovimsí (vía nvim-treesitter)disponible — ejemplo de config abajo
Zeddisponible — extensión de Zed
Helixdisponible — config languages.toml
IntelliJparcialparcialplaneado — gramática TextMate + LSP manual
Sublimeparcialparcialplaneado — paquete LSP-*

Ve la página de cada editor para el comando de install y el snippet de config.

Estás usandoQué obtienesSource
desktop app de httuiComportamiento LSP completo, pero embebido — no visiblehttui-lsp está statically linked
httui-tui (terminal)Igual que desktopIgual
VS Code con la extensiónMismas capacidades LSP, en el editor de VS CodeLa extensión descarga el binario httui-lsp
Otros editores LSP-awareIgual — apunta al binario en tu languages.toml / equivalenteInstalas 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).

Pattern del archivoQué hace el LSP
*.httuiTrata 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.

  • Sintaxis — la gramática formal
  • LSP — qué provee el language server
  • VS Code — el path más rápido para probarlo