Skip to content

Adiciona formatação automática (DocumentFormattingEditProvider) para FolEs, LMHT, LinConEs e delprops (#112) - #126

Merged
leonelsanchesdasilva merged 2 commits into
DesignLiquido:principalfrom
kunaaaalcodes:fix-112-formatting-web-languages
Jul 29, 2026
Merged

Adiciona formatação automática (DocumentFormattingEditProvider) para FolEs, LMHT, LinConEs e delprops (#112)#126
leonelsanchesdasilva merged 2 commits into
DesignLiquido:principalfrom
kunaaaalcodes:fix-112-formatting-web-languages

Conversation

@kunaaaalcodes

@kunaaaalcodes kunaaaalcodes commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Closes #112

Descrição

Esta PR adiciona suporte à formatação automática de código para os quatro dialetos que ainda não possuíam um provedor de formatação:

  • FolEs
  • LMHT
  • LinConEs
  • delprops

Na extensão Desktop, os provedores são carregados sob demanda (lazy loading), reduzindo o tempo de inicialização da extensão. Na extensão Web, os provedores são registrados diretamente durante a inicialização.


Problema

Os dialetos FolEs, LMHT, LinConEs e delprops ainda não possuíam suporte ao comando Format Document do VS Code.

Como consequência:

  • não era possível formatar automaticamente arquivos dessas linguagens;
  • a indentação e o espaçamento precisavam ser ajustados manualmente;
  • a experiência de edição era inconsistente em relação aos demais dialetos já suportados pela extensão.

Solução

Foram implementados quatro novos provedores de formatação, reutilizando componentes existentes sempre que possível e criando implementações específicas quando necessário.

LMHT

Arquivo

fontes/formatadores/lmht-provedor-formatacao.ts

Reutiliza o FormatadorLmht existente do pacote:

@designliquido/lmht-js

Pipeline utilizado:

Lexador
    ↓
Avaliador Sintático
    ↓
FormatadorLmht.formatar(arvore)

FolEs

Arquivo

fontes/formatadores/foles-provedor-formatacao.ts

Implementação própria responsável por percorrer a árvore sintática (Declaracao[]) e reconstruir o código FolEs formatado.

O formatador trata estruturas como:

  • BlocoDeclaracao;
  • seletores;
  • modificadores;
  • DeclaracaoVariavel;

aplicando indentação e organização consistente do código.


LinConEs

Arquivo

fontes/formatadores/lincones-provedor-formatacao.ts

Reutiliza o TradutorReversoSqlAnsi do pacote:

@designliquido/lincones-js

Pipeline utilizado:

Lexador
    ↓
Avaliador Sintático
    ↓
TradutorReversoSqlAnsi.traduzir(comandos)

delprops

Arquivo

fontes/formatadores/delprops-provedor-formatacao.ts

Implementa uma serialização linha a linha que:

  • preserva linhas vazias;
  • preserva comentários;
  • normaliza os espaços ao redor do operador =;
  • mantém a estrutura original do arquivo.

Registro dos provedores

fontes/ativacao-linguagens.ts

Cada função ativar{Linguagem}() passou a registrar o respectivo DocumentFormattingEditProvider através de importação dinâmica, seguindo o mesmo padrão de lazy loading já utilizado pelos provedores de:

  • completude;
  • hover.

Esse comportamento mantém consistência com a implementação introduzida na issue #111.

fontes/extensao-web.ts

O array de formatadores foi expandido para incluir os novos provedores:

['foles', FolesProvedorFormatacao]
['lmht', LmhtProvedorFormatacao]
['lincones', LinconesProvedorFormatacao]
['delprops', DelpropsProvedorFormatacao]

fontes/formatadores/index.ts

Adicionados os exports dos novos provedores de formatação.

fontes/formatadores/index-web.ts

Adicionados os exports correspondentes utilizados pela extensão Web.


Verificação

Foram realizados os seguintes testes:

  • npx tsc --noEmit executado sem erros de compilação;
  • npx jest executado com sucesso;
  • 1059 testes passando em 76 suites;
  • nenhuma regressão identificada nos formatadores já existentes para:
    • Delegua;
    • Pituguês;
    • Mapler;
    • Visualg;
    • Potigol;
    • PortugolStudio.

Arquivos alterados

Criados

Arquivo Descrição
fontes/formatadores/foles-provedor-formatacao.ts Provedor de formatação para FolEs
fontes/formatadores/lmht-provedor-formatacao.ts Provedor de formatação para LMHT
fontes/formatadores/lincones-provedor-formatacao.ts Provedor de formatação para LinConEs
fontes/formatadores/delprops-provedor-formatacao.ts Provedor de formatação para delprops

Modificados

Arquivo Descrição
fontes/ativacao-linguagens.ts Registro dos novos provedores via lazy loading
fontes/extensao-web.ts Registro dos novos provedores na extensão Web
fontes/formatadores/index.ts Exportação dos novos provedores
fontes/formatadores/index-web.ts Exportação dos novos provedores para a extensão Web

Resultado

Com esta PR, os quatro dialetos restantes passam a oferecer suporte ao comando Format Document, ampliando a cobertura de formatação automática da extensão.

A implementação segue a arquitetura existente do projeto, reutilizando componentes oficiais sempre que possível e mantendo o padrão de carregamento utilizado pelos demais provedores da extensão.


Closes #112

@leonelsanchesdasilva leonelsanchesdasilva left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Obrigado!

Mantém os novos provedores de formatação (foles, lmht, lincones,
delprops, potigol, portugolstudio, visualg) registrados diretamente
na extensão Web, conforme implementação da PR DesignLiquido#112.
@leonelsanchesdasilva
leonelsanchesdasilva merged commit 735ecdb into DesignLiquido:principal Jul 29, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Sem formatação para LMHT, FolEs, LinConEs e delprops

2 participants