README.md
September 20, 2026 · View on GitHub
Important
Este repositório foi arquivado. O motor de análise passou a fazer parte do PawnPro-Core, onde o desenvolvimento continua — é de lá que saem o código, as releases e a documentação, e é lá que vão issues e pull requests.
O histórico e as releases publicadas aqui ficam de pé, para referência.
Motor de análise para a linguagem Pawn (SA-MP / open.mp) — um servidor LSP escrito em Rust, que dá à extensão PawnPro o IntelliSense e os diagnósticos.
O que é
pawnpro-engine é o núcleo de análise do PawnPro. Roda como processo separado e conversa com o editor pelo Language Server Protocol sobre stdin/stdout — o mesmo protocolo do rust-analyzer e do clangd.
Estar fora do processo do editor é o que permite analisar um gamemode inteiro, com todos os seus includes transitivos, sem travar a digitação. Não é realce por expressão regular: o código é tokenizado e analisado de verdade, e é daí que vêm a resolução de símbolos entre arquivos, a contagem de referências e os diagnósticos com posição exata.
A extensão inicia o motor automaticamente quando encontra o binário; ele acompanha a instalação e não exige Rust nem nada instalado à parte.
Capacidades
- Diagnósticos — 19 códigos
PP####cobrindo erros de estrutura, código morto, símbolos não declarados, depreciação, indentação, nomenclatura e#pragmamalformado; 13 deles com correção automática (ver docs/diagnostics.md). - Completions — símbolos de todos os includes transitivos com snippets de parâmetros; itens depreciados marcados.
- Hover — assinatura e comentário de documentação formatado (Javadoc
@parame XMLdoc<summary>, o formato doomp-stdlib); em#includemostra o caminho resolvido. - Signature Help — parâmetro ativo destacado ao digitar
(e,. - CodeLens — contagem de referências para todas as funções; clicável.
- References —
textDocument/references(Shift+F12). - Semantic Tokens — coloração semântica com suporte a chamadas multiline.
- Formatação — documento inteiro e seleção de intervalo.
- Assistente de nomenclatura — convenções de caixa por categoria, com padrão próprio por expressão regular para o que os estilos prontos não descrevem.
- Code actions — correção automática para 13 dos diagnósticos.
- Invalidação granular — ao salvar um include, o motor republica automaticamente os diagnósticos de todos os arquivos abertos que dependem dele, transitivamente.
Para detalhes do protocolo e das opções de configuração, consulte docs/lsp.md.
Plataformas
| Plataforma | Artefato |
|---|---|
| Linux x64 | pawnpro-engine-linux-x64 |
| Linux arm64 | pawnpro-engine-linux-arm64 |
| Windows x64 | pawnpro-engine-win32-x64.exe |
| macOS x64 | pawnpro-engine-darwin-x64 |
| macOS arm64 | pawnpro-engine-darwin-arm64 |
Os binários são compilados com LTO, strip e panic = abort — sem dependências externas em runtime.
Desenvolvimento
Pré-requisitos: Rust stable (rustup install stable)
git clone https://github.com/NullSablex/PawnPro-Engine
cd pawnpro-engine
cargo build # debug
cargo build --release
cargo test
cargo fmt --all --check
# Exatamente o que o CI roda — sem as flags, um lint pedantic ou um aviso
# num teste passa aqui e reprova lá.
cargo clippy --all-targets -- -W clippy::pedantic -D warnings
O binário de debug é detectado automaticamente pela extensão PawnPro se estiver em ../pawnpro-engine/target/debug/ ou ../pawnpro-engine/target/release/.
Licença
PawnPro Engine License v1.0 — Source-Available (não Open Source).
Uso pessoal e comercial permitido ✅ · Redistribuição e venda proibidas ❌ · Detalhes: LICENSE.md