Pular para o conteúdo

Zed

O Zed empacota tree-sitter nativamente e tem uma história limpa de extensão LSP. A extensão httui-lang do Zed conecta os dois.

  1. Abra o Zed.
  2. Cmd+Shift+X → painel de Extensions.
  3. Pesquise “httui”.
  4. Instale httui-lang.

A extensão auto-instala o parser tree-sitter + baixa o binário httui-lsp no primeiro uso.

O Zed lê .zed/settings.json por projeto (seu vault) e ~/.config/zed/settings.json globalmente.

{
"lsp": {
"httui-lsp": {
"binary": {
"path": "httui-lsp",
"arguments": []
},
"settings": {
"httui": {
"env": "staging"
}
}
}
},
"languages": {
"httui": {
"tab_size": 2,
"format_on_save": "off",
"formatter": "language_server"
}
}
}

A extensão registra:

  • *.httui → linguagem httui
  • *.md → markdown (httui injeta em blocos de código fenced)

Pra injeção markdown funcionar, o Zed precisa da grammar tree-sitter markdown (built-in) + as queries de injeção do httui (shippam com a extensão). Sem config extra.

FeatureComo usar
Syntax highlightAutomático na abertura do arquivo
HoverMouse sobre {{ref}} (default K no modo vim do Zed)
Go to definitionF12 / Cmd+Click
Find referencesShift+F12
RenameF2
Code actionsCmd+.
Format documentCmd+Shift+I
Workspace symbolsCmd+T

Configure por vault em .zed/settings.json:

{
"lsp": {
"httui-lsp": {
"settings": { "httui": { "env": "staging" } }
}
}
}

Ou globalmente se você trabalha sempre num env. Pra trocar no voo:

Cmd+Shift+P“httui: Set active environment”.

Se o app desktop httui tá rodando no mesmo vault, o Zed mostra uma lens “Run” acima de cada bloco. Clique nela → o LSP manda httui/blockRun pro desktop, que executa e retorna o resultado inline (renderizado num painel pequeno abaixo do bloco via UI inline do Zed).

Sem o desktop rodando, a lens mostra “Run in TUI →” — clicar abre um split de terminal com httui-tui run <file>.

httui-lang shippa com mapeamentos de token que respeitam os temas do Zed:

Node httuiToken Zed (default)
(verb)keyword
(alias_ref ident)function
(env_ref ident)constant
(field) @assertionvariable.special
(literal) @assertionstring
(reference) (inteiro)embedded

Temas custom pegam isso automaticamente. Pra sobrescrever, no settings.json:

{
"experimental.theme_overrides": {
"syntax": {
"function": { "color": "#84B5FF" },
"constant": { "color": "#FFCC66" }
}
}
}

O Zed lê .zed/snippets/httui.json por projeto:

{
"HTTP block": {
"prefix": "http",
"body": [
"http alias=$1",
"${2:GET} ${3:https://example.com/path}",
"${4:Accept: application/json}",
"$0"
]
},
"HTTP with expect": {
"prefix": "httpexpect",
"body": [
"http alias=$1",
"${2:GET} ${3:https://example.com/path}",
"",
"# expect:",
"# status == 200",
"$0"
]
},
"DB block": {
"prefix": "db",
"body": [
"db-${1:local}",
"SELECT $0"
]
}
}

A extensão baixa httui-lsp do GitHub Releases no primeiro uso. Se offline / bloqueado:

Terminal window
cargo install httui-lsp

Depois configure o path explicitamente:

{ "lsp": { "httui-lsp": { "binary": { "path": "/Users/you/.cargo/bin/httui-lsp" } } } }

Cheque o playground tree-sitter do Zed:

Cmd+Shift+P“editor: open tree-sitter playground”.

Abra um runbook .md com fences httui. A árvore deve mostrar as regiões http / db-* parseadas por httui. Se não, reinstale a extensão.

Recarregue o LSP:

Cmd+Shift+P“editor: restart language server”.