Adiciona auto-indentação e configuração completa ao Pituguês (#101)#122
Merged
leonelsanchesdasilva merged 1 commit intoJul 26, 2026
Conversation
…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
merged commit Jul 26, 2026
5f1332a
into
DesignLiquido:principal
4 checks passed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.jsondeclarava apenascomments,brackets,autoClosingPairsesurroundingPairs. FaltavamindentationRules,onEnterRules,foldingewordPattern.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— oincreaseIndentPatterné 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. OdecreaseIndentPatterndes-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 comovalidaçãoeusuáriosejam 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):increaseIndentPatterncontra 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);decreaseIndentPatternnas continuações;onEnterRulese ofolding.offSide;wordPatterncaptura identificadores acentuados inteiros (número,endereço,validação,usuário,variavel_conta).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.tsfalha de forma sensível à ordenação das suítes: ela depende de umjest.mockque não sobrevive quando outra suíte reseta módulos no mesmo worker. Isso é reproduzível naprincipalsem este PR e não é causado por esta mudança:A correção adequada é adicionar
jest.resetModules()aobeforeEachda suíte de LMHT, o que foge ao escopo desta issue. Posso abrir uma issue própria para isso.Checklist
:) passa a indentar automaticamente:em string, comentário ou dicionáriosenao,caso,pegue…) alinhadas corretamentewordPatterncom acentos