Configuração

June 20, 2026 · View on GitHub

As configurações do PawnPro são gerenciadas por arquivos JSON — não pelas configurações do editor.

Arquivos de configuração

ArquivoEscopo
~/.pawnpro/config.jsonGlobal (todos os projetos)
.pawnpro/config.jsonProjeto (sobrescreve global)
.pawnpro/state.jsonEstado local (favoritos, histórico do servidor)

O arquivo de projeto pode ser aberto rapidamente pelo item PawnPro na barra de status. As configurações também podem ser editadas pela interface gráfica acessível via comando pawnpro.openSettings ou pelo item Configurações no menu da barra de status.

Compilação

{
  "compiler": {
    "autoDetect": true,
    "path": "",
    "args": []
  },
  "includePaths": ["${workspaceFolder}/pawno/include"],
  "output": {
    "encoding": "windows1252"
  },
  "build": {
    "showCommand": false
  }
}
ChavePadrãoDescrição
compiler.autoDetecttrueDetecta pawncc automaticamente. Ordem de busca: variável de ambiente $PAWNCC, $PATH, subdiretórios do workspace (qawno/, pawno/, include/, tools/, bin/), caminhos comuns do sistema
compiler.path""Caminho absoluto para o executável pawncc. Se apontar para um diretório, procura pawncc dentro dele. No painel de configurações gráfico, este campo fica oculto enquanto compiler.autoDetect está ligado (a detecção automática torna o caminho manual irrelevante); desligue a detecção automática para exibi-lo e editá-lo
compiler.args[]Argumentos adicionais passados ao compilador
includePaths["${workspaceFolder}/pawno/include"]Diretórios de includes; suporta ${workspaceFolder}. Em runtime, a extensão também adiciona automaticamente qawno/include, pawno/include e include da raiz do workspace se existirem, além de paths vindos de -i em compiler.args
output.encoding"windows1252"Encoding da saída do compilador (windows1252, utf8, latin1)
build.showCommandfalseExibe o comando completo do compilador no painel de saída

Análise

{
  "analysis": {
    "warnUnusedInInc": false,
    "suppressDiagnosticsInInc": false,
    "sdk": {
      "platform": "auto",
      "filePath": ""
    }
  }
}
ChavePadrãoDescrição
analysis.warnUnusedInIncfalseHabilita PP0006 para stocks em arquivos .inc
analysis.suppressDiagnosticsInIncfalseSuprime todos os diagnósticos dentro de arquivos .inc
analysis.sdk.platform"auto"SDK base: "auto", "omp", "samp" ou "none". "auto" procura open.mp.inc primeiro em <workspace>/qawno/include/, depois nos includePaths; se não encontrar, assume SA-MP. O painel de configurações gráfico expõe apenas omp, samp e none"auto" só é configurável via JSON
analysis.sdk.filePath""Caminho manual para o arquivo SDK centralizador (necessário principalmente para SA-MP, onde não há convenção de nome automática)

Formatação

{
  "format": {
    "preset": "allman",
    "braceStyle": "nextLine",
    "spaceAroundOperators": true,
    "emptyBlockSameLine": true
  }
}
ChavePadrãoDescrição
format.preset"allman""allman", "knr", "compact" ou "custom"
format.braceStyle"nextLine""nextLine" ou "sameLine". Só aplicado quando preset é "custom"
format.spaceAroundOperatorstrueEspaço em volta de operadores binários. Só no "custom"
format.emptyBlockSameLinetrueMantém blocos vazios colados ao controle. Só no "custom"

Nomenclatura (assistente de nomes)

Desligado por padrão. Quando ligado, emite o diagnóstico PP0018.

{
  "analysis": {
    "naming": {
      "enabled": false,
      "minLength": 2,
      "maxListFileBytes": 33554432,
      "blocklistFile": "${workspaceFolder}/.pawnpro/naming-blocklist.ban",
      "loopIndicesFile": "${workspaceFolder}/.pawnpro/naming-loop-indices.allow",
      "style": {
        "functions": [],
        "globals": [],
        "locals": [],
        "constants": [],
        "macros": [],
        "parameters": []
      }
    }
  }
}
ChavePadrãoDescrição
analysis.naming.enabledfalseLiga o assistente de nomes
analysis.naming.minLength2Comprimento mínimo antes de sinalizar (índices de loop são tolerados)
analysis.naming.maxListFileBytes33554432Limite (bytes) que a engine processa de cada arquivo .ban/.allow. Não impede editá-los
analysis.naming.blocklistFile.pawnpro/naming-blocklist.banArquivo com os nomes proibidos (um por linha, # comenta). Tem prioridade sobre a lista inline
analysis.naming.loopIndicesFile.pawnpro/naming-loop-indices.allowArquivo com os índices de loop tolerados
analysis.naming.style.<categoria>[]Lista de estilos aceitos por categoria (functions, globals, locals, constants, macros, parameters). Lista vazia = sem checagem; o nome é aceito se casar com qualquer estilo da lista. Ver Nomenclaturas aceitas abaixo

As listas grandes (blocklist/allowShortInLoops) ficam nos arquivos .ban/.allow, não no JSON. Ver o guia de listas de nomes.

Nomenclaturas aceitas

Cada item da lista de uma categoria é uma destas convenções de caixa. Um nome é aceito se casar com pelo menos uma das convenções configuradas para a categoria dele.

ValorConvençãoCasaNão casa
camelCasePrimeira palavra minúscula, demais capitalizadas, sem _playerScore, protZ, countPlayerScore, player_score
snake_caseTudo minúsculo, palavras separadas por _player_score, carregar_lixeiras, countplayerScore, PlayerScore
PascalCaseCada palavra capitalizada, sem _PlayerScore, Palavrao, CarregarLixeirasplayerScore, Carregar_Lixeiras
UPPER_CASETudo maiúsculo, palavras separadas por _MAX_PLAYERS, PALAVRAO, LIMITmaxPlayers, Max_Players
Capitalized_SnakeCada trecho separado por _ começa com maiúscula e tem ao menos uma minúscula; o _ é opcionalCarregar_Lixeiras, Carregar_Caixa_Eletronico, Palavrao, CarregarLixeirascarregar_lixeiras, Carregar_LIXEIRAS, PALAVRAO

Observações:

  • Capitalized_Snake engloba PascalCase. Como o _ é opcional, todo nome que casa PascalCase (ex.: Palavrao, CarregarLixeiras) também casa Capitalized_Snake; a diferença é que Capitalized_Snake aceita também os separados por _ (ex.: Carregar_Lixeiras). Na prática, marcar Capitalized_Snake numa categoria já cobre os nomes em PascalCase.
  • Um _ inicial é ignorado antes da checagem (_count é avaliado como count). Convém para descartes e nomes "privados".
  • Dígitos não desqualificam nenhum estilo; ficam grudados na palavra anterior (slot1 é uma palavra).
  • A checagem é por categoria: o mesmo nome pode ser aceito como função e sinalizado como macro, conforme os estilos de cada uma. Os quick fixes (renomear) oferecem a conversão para os estilos configurados.

Servidor

{
  "server": {
    "type": "auto",
    "path": "",
    "cwd": "${workspaceFolder}",
    "args": [],
    "logPath": "",
    "logEncoding": "windows1252",
    "clearOnStart": true,
    "output": {
      "follow": "visible"
    }
  }
}
ChavePadrãoDescrição
server.type"auto"Tipo de servidor: "samp", "omp" ou "auto"
server.path""Caminho para o executável do servidor. Vazio ativa detecção automática nos subdiretórios do workspace: raiz, server/, samp/, samp-server/, samp03/, open.mp/
server.cwd"${workspaceFolder}"Diretório de trabalho ao iniciar o servidor. Se vazio e server.path está preenchido, usa o diretório do executável
server.args[]Argumentos adicionais passados ao executável
server.logPath""Caminho do arquivo de log a ser monitorado. Vazio: SA-MP usa server_log.txt; open.mp usa o valor de logging.file em config.json (padrão log.txt). O monitoramento de log funciona somente em Linux e macOS
server.logEncoding"windows1252"Encoding do arquivo de log (windows1252, utf8, latin1)
server.clearOnStarttrueLimpa o painel de saída ao (re)iniciar o servidor
server.output.follow"visible"Rola automaticamente o painel de log: "visible" (quando visível), "always" ou "off"

Interface e idioma

{
  "syntax": {
    "scheme": "none",
    "applyOnStartup": false
  },
  "ui": {
    "showIncludePaths": false,
    "animateTitle": false
  },
  "locale": ""
}
ChavePadrãoDescrição
syntax.scheme"none"Tema de sintaxe ativo: "none", "auto", "classic_white", "classic_dark", "modern_white", "modern_dark"
syntax.applyOnStartupfalseReaplicar o esquema ao iniciar (gerenciado automaticamente pelos comandos applySyntaxScheme e resetSyntaxScheme)
ui.showIncludePathsfalseExibe o caminho relativo de cada arquivo .inc na aba Includes da barra lateral
ui.animateTitlefalseAnima as letras do título PawnPro no topo das páginas em sequência (teclado → bloco → cair), em loop com pausa
locale""Idioma das mensagens de diagnóstico do motor LSP: "" (automático, herda o idioma do editor), "pt-BR" ou "en"