Ir al contenido

Helix

Helix tiene soporte first-class de tree-sitter + LSP, configurado vía TOML. httui-lang se conecta con una sola entrada en languages.toml más un fetch único de gramática.

Ventana de terminal
cargo install httui-lsp

Verifica que esté en PATH:

Ventana de terminal
httui-lsp --version

Edita ~/.config/helix/languages.toml:

[[language]]
name = "httui"
scope = "source.httui"
file-types = ["httui"]
roots = [".httui", "runbooks", "connections.toml", "envs"]
comment-token = "#"
indent = { tab-width = 2, unit = " " }
language-servers = ["httui-lsp"]
[language.auto-pairs]
'{' = '}'
'"' = '"'
"'" = "'"
'(' = ')'
[language-server.httui-lsp]
command = "httui-lsp"
[language-server.httui-lsp.config]
httui = { env = "staging" }

Agrega a languages.toml:

[[grammar]]
name = "httui"
source = { git = "https://github.com/httuicom/tree-sitter-httui", rev = "main" }

Luego buildeala:

Ventana de terminal
hx --grammar fetch
hx --grammar build

hx --health httui ahora debería reportar la gramática como instalada.

Helix necesita los queries de highlight en ~/.config/helix/runtime/queries/httui/:

Ventana de terminal
mkdir -p ~/.config/helix/runtime/queries/httui
cd ~/.config/helix/runtime/queries/httui
curl -O https://raw.githubusercontent.com/httuicom/tree-sitter-httui/main/queries/highlights.scm
curl -O https://raw.githubusercontent.com/httuicom/tree-sitter-httui/main/queries/injections.scm
curl -O https://raw.githubusercontent.com/httuicom/tree-sitter-httui/main/queries/folds.scm

(Futuro: estas shipearán con el grammar fetch automáticamente cuando el runtime de Helix soporte queries vendoreadas.)

Para que httui inyecte dentro de bloques fenced en .md, Helix necesita el query de injection de markdown actualizado. Agrega a ~/.config/helix/runtime/queries/markdown/injections.scm (extiende, no reemplaces):

((fenced_code_block
(info_string (language) @lang)
(code_fence_content) @injection.content)
(#match? @lang "^(http|db-)")
(#set! injection.language "httui"))

Después de esto, los bloques fenced de httui dentro de markdown hacen highlight correctamente.

Ventana de terminal
hx ~/runbooks/runbooks/example.httui

Dentro de Helix:

  • :lsp-info — debería mostrar httui-lsp corriendo
  • Hovea una referencia {{...}} (default Space+k) — popup con el valor resuelto
  • gd en una referencia — salta a la definición del alias
  • Space+r — rename
  • Space+a — code actions

El setting env pasa al LSP. Edítalo en languages.toml y recarga (:reload).

Para cambiar per-buffer, usa el cambio de workspace configuration del LSP — Helix no tiene una UI built-in para esto todavía, pero podés correr:

:lsp-workspace-command httui.setEnv staging

(Comandos custom expuestos por httui-lsp por sesión.)

Helix tiene soporte mínimo de snippets. El httui-lsp shipea items de completion con snippet bodies — tipear http y confirmar el completion expande el scaffold. Igual para db, expect, expect.status, etc.

Mismo patrón que Neovim — shell out a httui-tui:

~/.config/helix/config.toml
[keys.normal.space.h]
r = ":sh httui-tui run %{buffer_name} --env staging"

Space+h+r ejecuta el runbook actual en el TUI al lado de Helix.

Para inline run-and-show-result, la desktop app de httui debe estar abierta en el mismo vault — entonces el LSP forwardea a ella vía httui/blockRun.

Revisa hx --health httui:

OutputSignifica
✓ httui-lspBinario LSP en PATH
✗ httui-lsp: command not foundInstala el binario
✓ grammar httuiParser tree-sitter buildeado
✗ grammar httui: not foundRe-ejecuta hx --grammar fetch && hx --grammar build

Highlight dentro de fences en markdown no funciona

Sección titulada «Highlight dentro de fences en markdown no funciona»

El query de injection de markdown debe mencionar httui explícitamente (Helix no auto-hereda). Ve el snippet de injection en Integración con markdown arriba.

Abre :log (el log del LSP) y busca httui. Común: vault root no detectado porque el archivo no está bajo una carpeta que contenga .httui / runbooks / connections.toml. Workaround: crea un connections.toml vacío.

Los grupos de highlight de Helix en tu tema levantarán:

Scope de highlightRecomendación
keywordHTTP verb, identifier del lenguaje
functionaliases de bloque en referencias
constantkeys de env var
stringURLs, header values, literals
variable.parameteridentifiers internos de referencia

La mayoría de los temas ya mapean estos — sin trabajo httui-specific necesario.