Listas externas do assistente de nomes (.ban / .allow)
As listas longas do assistente de nomes — nomes proibidos (blocklist) e
índices de loop tolerados — moram em arquivos próprios, não no JSON de
configuração. Isso mantém o config.json enxuto e dá ao dev um arquivo simples
de editar.
Arquivos
| Lista | Arquivo padrão | Extensão |
|---|---|---|
| Nomes proibidos | .pawnpro/naming-blocklist.ban |
.ban |
| Índices de loop tolerados | .pawnpro/naming-loop-indices.allow |
.allow |
Formato: um termo por linha; linhas em branco e iniciadas por # são
ignoradas; espaços nas pontas são removidos. Sem dependência de parser (a engine
lê com lines().filter(...)).
Resolução (engine)
NamingConfig::resolved_blocklist / resolved_loop_indices:
- Se o caminho (
blocklistFile/loopIndicesFile) aponta para um arquivo legível → usa o arquivo. - Senão → cai no fallback inline (
blocklist/allowShortInLoopsdo JSON).
O caminho chega à engine já com ${workspaceFolder} resolvido pela extensão.
Geração (extensão)
Quando o assistente está ligado (naming.enabled), a extensão semeia os
arquivos ausentes com os padrões da config (configBridge::ensureNamingFiles),
sem sobrescrever os existentes. A página de configurações expõe um botão
"Abrir arquivo" por lista (cria e abre).
Status
| Fase | Estado |
|---|---|
| 1 — Arquivos como fonte + leitura com fallback + geração + "Abrir arquivo" | ✅ |
| 2 — Migração do JSON (botão + recuperação) | ✅ |
| 3 — Exibição inline limitada na página | ⬜ planejado |
Migração (implementada)
Decidido durante a implementação que a migração é manual, não automática ("migrar automaticamente é ruim" — o dev controla):
- Botão "Migrar" na seção Nomenclatura, exibido só quando há listas inline
obsoletas no
config.json. Move os termos para os arquivos.ban/.allowe limpa o JSON. - Backup só dos itens das chaves migradas (não do
config.jsoninteiro), numnaming-backup-<timestamp>.json; o caminho é informado ao dev. - Confirmação por tamanho: se o conteúdo excede o limite, pede aval antes.
- Sem limite na migração: a lista inteira é movida, por maior que seja.
- Comando "Recuperar configuração grande" — lê o
config.jsoncru ignorando o teto (caso esteja grande demais para ser parseado normalmente), extrai as listas e reduz o JSON. Salva-vidas para o impasse de config gigante.
Pendente (Fase 3)
- Exibição inline limitada — uma prévia dos primeiros N termos do arquivo na própria página (lendo do arquivo, não do JSON), com botão para abrir o resto.