Extensão para o editor Zed com suporte a Delégua e dialetos usando o pacote @designliquido/delegua-lsp.
- Language Server Protocol para Delégua e dialetos (completude, hover, definição, referências, renomeação e formatação, conforme o servidor).
- Associação automática de extensões de arquivo usadas no ecossistema Design Líquido.
- Instalação automática do pacote
@designliquido/delegua-lspvia npm quando necessário.
Linguagens registradas nesta extensão:
- BIRL (
.birl) - Delégua (
.delegua) - Delégua Testes (
.teste.delegua) - Delégua Propriedades (
.delprops) - Egua (
.egua) - FolEs (
.foles) - LinConEs (
.lincones) - LMHT (
.lmht) - MAPLER (
.mapler) - Pituguês (
.pitu,.pitugues) - Portugol Studio (
.por) - Potigol (
.poti,.potigol) - VisuAlg (
.alg)
Linguagens conectadas ao @designliquido/delegua-lsp (conforme suporte
documentado do servidor):
- BIRL
- Delégua
- Delégua Testes
- MAPLER
- Pituguês
- Portugol Studio
- Potigol
- VisuAlg
extension.toml: manifesto da extensão do Zed.Cargo.tomlefontes/lib.rs: implementação Rust/WASM que inicia o servidor LSP.languages/delegua/config.toml: definição da linguagem no Zed.
No ecossistema de extensões do Zed, a pasta que define linguagens precisa se chamar exatamente languages. O editor usa esse nome para descobrir e carregar
arquivos config.toml de linguagem.
Se necessário, você pode usar uma pasta linguagens para organização interna
(documentação, scripts e anotações), mas a pasta consumida pelo Zed deve
continuar sendo languages.
- Garanta que Rust foi instalado com
rustup. - Garanta que Node.js e npm estão disponíveis no ambiente.
- No Zed, rode a ação
zed: install dev extension. - Selecione esta pasta (
C:/Delegua/zed). - Abra um arquivo com extensão suportada, por exemplo
.delegua.
Atualmente a linguagem está registrada com gramática temporária para permitir integração imediata do LSP no Zed. O próximo passo recomendado é plugar uma gramática tree-sitter específica de Delégua para melhorar highlighting e recursos baseados em sintaxe.
As gramáticas oficiais atuais da linguagem Delégua, no repositório principal,
estão em formato ANTLR (.g4): https://github.com/DesignLiquido/delegua/tree/principal/gramaticas
Importante: o Zed não consome ANTLR diretamente em extensões de linguagem. Para usar gramática nativa no Zed, ainda é necessário disponibilizar uma gramática em formato tree-sitter.
Status atual da integração na extensão:
languages/delegua/config.tomljá usagrammar = "delegua"languages/delegua-testes/config.tomljá usagrammar = "delegua"extension.tomljá registra[grammars.delegua]apontando para o bootstrap local
Observação: o uso de repository = "file://./gramaticas/tree-sitter-delegua"
é voltado ao fluxo de desenvolvimento local. Para publicação/distribuição,
o recomendado é apontar para um repositório Git da gramática com revisão fixa.
Status atual:
- Delégua e dialetos com fallback para gramáticas existentes (principalmente JavaScript).
- LSP funcional para os dialetos suportados por
@designliquido/delegua-lsp.
Próxima etapa:
- Publicar/definir o repositório da gramática tree-sitter de Delégua. A gramática ANTLR existente deve ser tratada como fonte de verdade para derivar essa implementação.
- Registrar a gramática no manifesto
extension.toml. - Trocar
grammaremlanguages/delegua/config.toml(e, se necessário, nos dialetos). - Adicionar queries por linguagem (
highlights.scm,brackets.scm,indents.scm).
Enquanto a gramática dedicada não estiver disponível, a extensão permanece utilizável com recursos de LSP e associação de arquivos já configurados.
Bootstrap local já incluído neste repositório em:
- C:/Delegua/zed/gramaticas/tree-sitter-delegua
Esse bootstrap já foi gerado com tree-sitter CLI e contém:
- grammar.js
- tree-sitter.json
- src/ (arquivos gerados do parser)
- queries/ iniciais (highlights, brackets, indents)
Validação atual do bootstrap:
- corpus inicial de testes criado
tree-sitter testpassando
Cobertura sintática inicial já implementada no bootstrap:
- declaração de variáveis
- declaração de função e métodos
- declaração de interface
- declaração de extensão (
extensao de) - condicionais
se/senao - laços
enquantoepara - laço
para cada ... em importarclasseclassecomimplementa/implements- comando de propriedade (
identificador: comando) escolha/caso/padraotente/pegue/finalmentetendo ... como ...continueesustarfalhar,assercaoeajuda- literais de vetor e indexação (
[]) - arrow functions
- optional chaining (
?.) - spread em argumentos (
...) - literais de objeto (
{ chave: valor })
Documentação complementar:
- docs/tree-sitter-migracao.md
- docs/antlr-origem.md