Skip to content

Adiciona auto-indentação e configuração completa ao Pituguês (#101)#122

Merged
leonelsanchesdasilva merged 1 commit into
DesignLiquido:principalfrom
oxbar:corrige-indentacao-pitugues-101
Jul 26, 2026
Merged

Adiciona auto-indentação e configuração completa ao Pituguês (#101)#122
leonelsanchesdasilva merged 1 commit into
DesignLiquido:principalfrom
oxbar:corrige-indentacao-pitugues-101

Conversation

@oxbar

@oxbar oxbar commented Jul 26, 2026

Copy link
Copy Markdown
Contributor

Auto-indentação e configuração completa de linguagem para Pituguês

Fixes #101

Problema

Pituguês é uma linguagem indentada por dois-pontos, como Python, mas configuracoes/configuracao-pitugues.json declarava apenas comments, brackets, autoClosingPairs e surroundingPairs. Faltavam indentationRules, onEnterRules, folding e wordPattern.

Na prática, pressionar Enter após funcao rota(requisicao, resposta): não indentava a linha seguinte — indentação manual em cada bloco, o dia inteiro. É o atrito mais frequente possível. O padrão de qualidade já existia internamente (o LMHT tem as oito seções), mas não havia sido replicado para o Pituguês.

Solução

As quatro seções que faltavam foram adicionadas, levando o Pituguês às mesmas oito do LMHT:

indentationRules — o increaseIndentPattern é ancorado às palavras-chave de bloco (se, senao, senao se, para, enquanto, fazer, funcao, classe, construtor, escolha, caso, tente, pegue, finalmente) terminadas em :. Ancorar às palavras-chave — em vez de um ingênuo "linha termina em dois-pontos" — evita indentar por dois-pontos que aparecem em strings, comentários e dicionários literais. O decreaseIndentPattern des-indenta as linhas de continuação (senao, senao se, caso, pegue, finalmente), para que fiquem alinhadas ao bloco a que pertencem.

onEnterRules — indenta a próxima linha após a abertura de um bloco.

folding — dobra por indentação (offSide: true), como em Python, com marcadores de região por comentário.

wordPattern — inclui letras acentuadas e sublinhado, para que identificadores como validação e usuário sejam tratados como uma palavra única (duplo-clique, expandir seleção). Sem isso, o duplo-clique quebraria a palavra no acento.

Testes

Como não havia nenhum teste para as configurações de linguagem, este PR adiciona testes/linguagens/configuracao-pitugues.test.ts (36 casos):

  1. Confirma que as oito seções estão presentes;
  2. Valida o increaseIndentPattern contra código real — as 14 aberturas de bloco que devem indentar e, principalmente, os 5 casos que não devem (dois-pontos em string, em comentário, em dicionário literal, atribuição simples, retorna);
  3. Valida o decreaseIndentPattern nas continuações;
  4. Verifica o onEnterRules e o folding.offSide;
  5. Verifica que o wordPattern captura identificadores acentuados inteiros (número, endereço, validação, usuário, variavel_conta).
testes/linguagens/configuracao-pitugues.test.ts: 36 testes passando
Suíte de produção completa: 970 testes passando (sem a suíte com falha pré-existente descrita abaixo)

Observação de escopo (falha pré-existente não relacionada)

Ao rodar a suíte completa, a seção "estruturas mockadas" de testes/completude/lmht-provedor-completude.test.ts falha de forma sensível à ordenação das suítes: ela depende de um jest.mock que não sobrevive quando outra suíte reseta módulos no mesmo worker. Isso é reproduzível na principal sem este PR e não é causado por esta mudança:

  • O novo teste passa isolado (36/36) e junto do teste de LMHT em qualquer ordem (46/46);
  • Com apenas a configuração alterada e o novo teste removido, a suíte de produção passa 970/970;
  • A presença de um arquivo de teste novo reordena a distribuição de suítes por worker, o que apenas expõe o vazamento pré-existente entre suítes de LMHT — não o introduz.

A correção adequada é adicionar jest.resetModules() ao beforeEach da suíte de LMHT, o que foge ao escopo desta issue. Posso abrir uma issue própria para isso.

Checklist

  • Enter após abertura de bloco (:) passa a indentar automaticamente
  • Padrão ancorado às palavras-chave: não indenta por : em string, comentário ou dicionário
  • Continuações (senao, caso, pegue…) alinhadas corretamente
  • Dobra por indentação (offSide) e wordPattern com acentos
  • 36 testes de regressão novos (não havia testes de configuração de linguagem)
  • Mudança apenas em JSON e testes; nenhum código de runtime alterado

…iquido#101)

Pituguês é uma linguagem indentada por dois-pontos, como Python, mas
configuracoes/configuracao-pitugues.json declarava apenas comments,
brackets, autoClosingPairs e surroundingPairs. Sem indentationRules e
onEnterRules, pressionar Enter após 'funcao rota(requisicao, resposta):'
não indentava a linha seguinte — indentação manual a cada bloco, o dia
inteiro.

Este commit adiciona as quatro seções que faltavam, levando o Pituguês
às mesmas oito do LMHT:

- indentationRules: increaseIndentPattern ancorado às palavras-chave de
  bloco (se, senao, senao se, para, enquanto, fazer, funcao, classe,
  construtor, escolha, caso, tente, pegue, finalmente) terminadas em
  ':'. Ancorar às palavras-chave, em vez de 'linha termina em dois-
  pontos', evita indentar por dois-pontos em strings, comentários e
  dicionários literais. decreaseIndentPattern des-indenta as linhas de
  continuação (senao, senao se, caso, pegue, finalmente).
- onEnterRules: indenta a próxima linha após a abertura de um bloco.
- folding: dobra por indentação (offSide), como em Python, com marcadores
  de região por comentário.
- wordPattern: inclui letras acentuadas e sublinhado, para que
  identificadores como 'validação' e 'usuário' sejam selecionados como
  uma palavra única (duplo-clique, expandir seleção).

Como não havia testes para as configurações de linguagem, este commit
também adiciona testes/linguagens/configuracao-pitugues.test.ts (36
casos): confirma as oito seções, valida increase/decreaseIndentPattern
contra código real — incluindo os casos que NÃO devem indentar (dois-
pontos em string, comentário e dicionário) — e verifica a captura de
identificadores acentuados pelo wordPattern.

Mudança apenas em JSON de configuração e testes; nenhum código de
runtime alterado.

Fixes DesignLiquido#101

@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!

@leonelsanchesdasilva
leonelsanchesdasilva merged commit 5f1332a into DesignLiquido:principal Jul 26, 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.

Pituguês não tem auto-indentação (linguagem indentada por dois-pontos)

2 participants