Pular para o conteúdo

httui-lang

httui-lang é a definição formal do formato de bloco .httui — a sintaxe fenced que você escreve dentro dos runbooks. Shippa como:

  • Uma grammar tree-sitter pra syntax highlighting em qualquer editor que suporta tree-sitter
  • Um servidor LSP (httui-lsp) com autocomplete, hover, go-to-definition e diagnostics pra referências
  • Extensões de editor pra VS Code, Neovim, Zed, Helix e mais

O app desktop e a TUI ambos embedam httui-lang internamente. O tooling standalone te dá a mesma experiência em qualquer editor que fala LSP — sem sair do seu fluxo de costume.

Você já pode usar o httui abrindo o app desktop. Então por que ter uma linguagem e um LSP?

Sem httui-langCom httui-lang
Edita runbooks só no app desktop httuiEdita em VS Code / Neovim / Zed com autocomplete completo
Sem syntax highlight no GitHub, Obsidian, etcGrammar tree-sitter → highlight padrão em todo lugar
Hover em {{ref}} fora do httui — é só textoServidor LSP resolve e mostra o valor
httui-lang é invisívelPublicável em qualquer registro de pacote — outros podem construir tooling

A aposta: runbooks são valiosos como formato, não só como algo que você abre no nosso app. Tornar a linguagem e o tooling first-class significa que o formato pode sobreviver ao app — exatamente igual ao próprio markdown.

Um arquivo .httui (ou um bloco de runbook .md — mesma sintaxe) aberto no VS Code com a extensão 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

O que o LSP te dá:

  • Hover em {{BASE_URL}} → “resolvido pra https://staging-api.example.com (env: staging)”
  • Hover em {{login.body.token}} → mostra o valor capturado se cacheado, ou “sem cache — bloco ainda não rodou”
  • Cmd+Click em {{login.body.token}} → pula pra definição do alias do bloco login
  • Digite {{ → autocomplete lista aliases acima + env vars do env ativo
  • Digite alias errado → underline em ondinha, “unknown alias loginn
EditorTree-sitterLSPStatus
VS Codesimsimdisponível — extensão do marketplace
Neovimsim (via nvim-treesitter)simdisponível — exemplo de config abaixo
Zedsimsimdisponível — extensão Zed
Helixsimsimdisponível — config languages.toml
IntelliJparcialparcialplanejado — grammar TextMate + LSP manual
Sublimeparcialparcialplanejado — pacote LSP-*

Veja a página de cada editor pro comando de install e snippet de config.

Você tá usandoO que ganhaOrigem
App desktop httuiComportamento LSP completo, mas embedded — não visívelhttui-lsp é staticamente linkado
httui-tui (terminal)Mesma coisa do desktopMesmo
VS Code com extensãoMesmas capacidades de LSP, no editor do VS CodeExtensão baixa o binário httui-lsp
Outros editores LSP-awareMesmo — aponte pro binário no seu languages.toml / equivalenteVocê instala httui-lsp uma vez

O servidor LSP é o mesmo binário seja você shippando como parte do app desktop ou instalando standalone via cargo install httui-lsp (ou o gerenciador de pacote por editor).

Pattern de arquivoO que o LSP faz
*.httuiTrata o arquivo todo como runbook .httui (cada linha é parte de um ou mais blocos)
*.md com fences http / db-*Injeta comportamento LSP dentro das regiões de fence só; resto fica markdown

O modo duplo significa que você pode manter seus runbooks .md existentes e criar arquivos .httui standalone (sem wrapper markdown) quando não precisa da camada de prosa.

  • Sintaxe — a gramática formal
  • LSP — o que o language server provê
  • VS Code — caminho mais rápido pra testar