Obrigado pelo interesse em contribuir! Leia este guia antes de abrir uma issue ou pull request.
- Verifique se já existe uma issue aberta para o problema ou feature.
- Para mudanças significativas, abra uma issue primeiro para discutir a abordagem antes de implementar.
- Ao contribuir, você concorda que seu código será licenciado sob os mesmos termos da licença do projeto.
Pré-requisitos:
- Node.js 18+
- npm
- VS Code (para testar a extensão)
git clone https://github.com/NullSablex/PawnPro
cd pawnpro
npm installCompilar:
bash scripts/build.shCompilar só TypeScript (verificação de tipos):
npx tsc --noEmit -p .Instalar localmente para teste:
Pressione F5 no VS Code com o repositório aberto para abrir uma janela de extensão de desenvolvimento.
src/core/ ← lógica pura (zero imports de vscode)
src/vscode/ ← adaptação para APIs do VS Code
snippets/ ← snippets Pawn
syntaxes/ ← gramática TextMate e temas de sintaxe
templates/ ← templates de scripts (gamemode, filterscript, include)
scripts/ ← build, bundle, repack
docs/ ← documentação detalhada (não incluída no .vsix)
- Nunca importar
vscodeemsrc/core/— essa camada deve permanecer pura e testável fora do VS Code. - Mensagens ao usuário sempre via
src/vscode/nls.ts— sem strings hardcoded em outros arquivos. - Sem
any— usar tipos precisos ouunknowncom narrowing. - Sem comentários óbvios — apenas comentários que explicam por quê, não o quê.
- Configuração sempre via
PawnProConfigManager— nunca lervscode.workspace.getConfigurationfora deconfigBridge.ts.
- Crie um branch a partir de
master:git checkout -b feat/minha-feature - Faça as alterações seguindo as regras acima.
- Certifique-se que
npx tsc --noEmit -p .passa sem erros. - Teste manualmente com
F5no VS Code. - Abra a PR com uma descrição clara do que foi alterado e por quê.
Inclua na issue:
- Versão da extensão (
PawnPro x.x.xna status bar) - Sistema operacional e versão do VS Code
- Passos para reproduzir
- Comportamento esperado vs. comportamento observado
- Logs relevantes (Output → PawnPro Engine)
Abra uma issue com o label enhancement descrevendo:
- O problema que a feature resolveria
- Como você imagina que funcionaria
- Alternativas que você considerou