Skip to content

v1.4.0

Latest

Choose a tag to compare

@NullSablex NullSablex released this 01 Sep 15:28
4189c4d

Adicionado

  • Comentários de documentação nos hovers, signature help e autocomplete — o
    comentário imediatamente acima de uma declaração passa a ser interpretado, não
    apenas repassado como texto cru. Duas convenções são reconhecidas, detectadas
    pelo próprio conteúdo:

    • Javadoc (@param, @return, @remarks/@note) — o primeiro parágrafo
      vira o resumo, e linhas seguintes a uma tag continuam o texto dela
    • XMLdoc (<summary>, <param name="">, <returns>, <remarks>) — a
      convenção herdada do C# que o omp-stdlib usa. O HTML inline vira Markdown
      (<b> → negrito, <c> → código, <br /> → quebra de linha); <library>,
      <seealso> e as âncoras <a href="#Func"> são metadados do gerador da wiki
      do open.mp e não aparecem no hover, onde só ocupariam espaço

    Em ambos, cada parâmetro é casado pelo nome (o sufixo [] é ignorado) e
    não pela posição — um comentário pode omitir parâmetros ou listá-los fora de
    ordem. O signature help passa a mostrar a descrição do parâmetro sob o
    cursor; o autocomplete mostra só o resumo, e o hover, o bloco inteiro
    formatado, com as seções traduzidas para o idioma resolvido. Um comentário sem
    marcação continua virando a descrição, como antes

  • Tags de documentação no autocomplete — o trigger @, dentro de um
    comentário, passa a oferecer @param, @return e @remarks com snippets

  • Padrão próprio no estilo de nomenclatura — um item da lista de estilos
    aceitos escrito entre barras (/^g_[a-z][a-zA-Z0-9]*$/) passa a ser lido como
    expressão regular, para convenções que os cinco estilos embutidos não descrevem
    — prefixo de global, notação húngara. Convive com eles pela regra que já valia:
    o nome é aceito se casar com qualquer critério da categoria.

    O padrão é âncorado como ^(?:…)$ — descreve o nome inteiro, e o agrupamento
    impede que uma alternância no topo ancore só os extremos. O _ inicial não
    é removido antes da comparação, ao contrário dos estilos embutidos: quem
    escreve o padrão decide se o aceita. Um padrão inválido é ignorado sem derrubar
    a análise nem os demais critérios da categoria.

    Não gera sugestão de renomeação: de um regex arbitrário dá para saber se o nome
    passa, não como reescrevê-lo. Por isso o critério é um tipo próprio (Rule) em
    vez de uma variante de Case, que alimenta o gerador de nomes. A crate regex
    tem tempo de execução linear garantido, então um padrão custoso não degrada a
    análise

  • Diagnósticos e hovers traduzidos para Espanhol, Romeno e Russo — as tabelas
    de mensagens messages/langs/{es,ro,ru}.rs existiam como esqueleto (texto ainda
    em inglês, copiado de en.rs) e agora estão de fato traduzidas: as 75 mensagens
    (diagnósticos PP*, contadores de referências do CodeLens e descrições de hover
    de palavras-chave) saem no idioma resolvido por Locale::from_str. Marcadores
    {} / {n} / {style} preservados; termos técnicos do Pawn (native,
    forward, stock, public, static, enum) mantidos em inglês

Alterado

  • #pragma deprecated substitui o marcador @DEPRECATED — a depreciação
    passa a usar a diretiva do próprio compilador Pawn, em vez do marcador em
    comentário que a engine reconhecia antes. A semântica acompanha a do
    compilador: a diretiva marca o próximo símbolo declarado e não tem forma
    inline. O texto que a segue é opcional e, quando presente, é anexado ao
    aviso
    PP0007 — é a parte acionável, já que normalmente diz o que usar no
    lugar:

    #pragma deprecated Use BanPlayerFor em vez desta
    stock BanTemporario(playerid, seconds) { }

    Cobertura inalterada: native, stock, public, forward, static,
    #define, variáveis globais e #include (PP0008), incluindo o pareamento
    automático entre forward e public

  • @DEPRECATED deixa de ser reconhecido — comentários com o marcador antigo
    não marcam mais nada. Quem o usava precisa trocar por #pragma deprecated
    (ver acima). O completion do @ que existia só para inseri-lo deu lugar às
    tags de documentação

  • Dependências (Rust)tokio 1.52.3 → 1.53.1, regex 1.12.4 → 1.13.1,
    serde 1.0.228 → 1.0.229, serde_json 1.0.150 → 1.0.151 e futures 0.3.32 →
    0.3.34, além das transitivas do Cargo.lock

  • CI — GitHub Actions atualizadas (pinadas por SHA): github/codeql-action
    4.36.2 → 4.37.9, actions/checkout 4.2.2 → 7.0.1, actions/upload-artifact
    6.0.0 → 7.0.1, actions/download-artifact 7.0.0 → 8.0.1,
    actions/upload-pages-artifact 3.0.1 → 5.0.0, Swatinem/rust-cache 2.9.1 →
    2.9.2, ossf/scorecard-action 2.4.3 → 2.4.4 e softprops/action-gh-release
    3.0.1 → 3.0.3

  • Docs (CI)mkdocs-material para 9.7.7 e pymdown-extensions 10.21.3 →
    11.0.2 (pinados por hash)

  • Dependabot — um PR por ecossistema — as atualizações passam a ser agrupadas
    por ecossistema (cargo, GitHub Actions, pip) em vez de abrir um PR por
    dependência, reduzindo o ruído de manutenção

  • Autocomplete ordenado pela proximidade do cursor — a lista vinha ordenada
    de um jeito que punha as variáveis locais e os parâmetros abaixo de
    milhares de nativas dos includes; o que está mais perto de quem escreve
    aparecia por último. A ordem passa a ser: locais e parâmetros, símbolos do
    próprio arquivo, símbolos dos includes, palavras-chave e, por fim, os
    marcados com #pragma deprecated — que continuam aparecendo (às vezes é
    mesmo o que se quer), mas nunca à frente de uma alternativa viva. Dentro de
    cada grupo a ordem é alfabética sem diferenciar maiúsculas

  • Listas grandes de completion não travam mais a digitação — um projeto com
    muitos includes mandava todos os símbolos ao editor a cada tecla. A resposta
    passa a ser cortada em 1000 itens e marcada como isIncomplete, fazendo o
    editor pedir de novo conforme o prefixo cresce. O corte vem depois da
    ordenação, então o que se perde são os itens mais distantes do cursor

  • Correções rápidas para mais nove diagnósticos — passam a ter quick fix:
    remover o corpo { } ilegal de um native/forward (PP0002/PP0003);
    dar corpo vazio ou converter em forward quando falta o corpo (PP0004);
    trocar por um símbolo de nome parecido quando a função chamada não existe
    (PP0010, o caso comum de erro de digitação); remover o #define e o
    #include não utilizados (PP0011/PP0012); e reindentar a linha
    (PP0017), usando o estilo de formatação configurado no projeto, não uma
    indentação fixa. Somados aos que já existiam, catorze dos dezenove
    diagnósticos agora oferecem correção

  • PP0019#pragma desconhecido ou malformado — o compilador rejeita uma
    diretiva que não conhece (erro 207), mas só na compilação; agora o aviso
    aparece enquanto se escreve, com quick fix. Cobre o nome errado
    (#pragma deprected → sugere deprecated, comparando com a lista do
    compilador) e a mensagem de deprecated escrita entre aspas — a diretiva toma
    o resto da linha como texto livre, então as aspas entrariam na mensagem em vez
    de delimitá-la. Aspas no meio do texto continuam sendo texto legítimo

Corrigido

  • Comentário de outra parte do arquivo aparecendo no hover — a varredura do
    doc comment subia o arquivo acumulando linhas, e acabava trazendo réguas,
    cabeçalhos de seção e o texto de outras funções para o hover do símbolo
    abaixo. Passa a valer a mesma regra do Javadoc e do PHPDoc: só o bloco
    imediatamente acima da declaração
    — um /* … */ colado nela, ou uma
    sequência contígua de linhas //. Uma linha em branco, ou qualquer código
    entre os dois, separa. Entre o comentário e a declaração continua podendo
    haver o #pragma deprecated que marca o símbolo
  • Doc comment de um símbolo aparecendo no hover de outro — quando o
    comentário era um bloco de uma linha só (/** … */), a varredura empurrava
    essa linha e ia procurar o /* de abertura a partir da linha anterior,
    atravessando o código acima até casar com o /** de outro comentário. O
    hover de um #define, por exemplo, mostrava a documentação da função
    anterior com o código do meio junto. Um */ sem abertura também deixa de
    virar doc, em vez de arrastar o arquivo até o topo
  • Aviso de depreciado desalinhando o hover — era escrito como blockquote
    (>), o que fazia o editor recuar o bloco e ler a linha --- seguinte como
    continuação dele, desalinhando a documentação inteira. Passa a ser texto
    normal — e agora traz junto a mensagem do #pragma deprecated, que antes só
    aparecia no aviso de uso
  • native/forward com assinatura quebrada em várias linhas eram ignorados
    ao fechar o ), o parser só criava o símbolo se a linha trouxesse {; sem
    isso, ficava esperando um corpo que nunca chega, já que essas duas formas
    declaram sem corpo e terminam em ;. O símbolo se perdia: sem hover, sem
    autocomplete e sem signature help. Atinge em cheio os includes do open.mp,
    onde assinaturas longas em várias linhas são comuns — um
    ApplyActorAnimation, com nove parâmetros em nove linhas, era invisível para
    a engine
  • Comentário de documentação perdido quando #pragma deprecated ficava entre
    ele e a declaração
    — a varredura do doc caminha para cima e parava na
    primeira linha que não fosse comentário, e a diretiva cortava o caminho. Passa
    a pular a diretiva
  • CodeQL: análise ausente em PRs de docs e dependências — o repositório usava
    o default setup do CodeQL, que só analisa um pull request quando ele toca
    arquivos das linguagens configuradas. Um PR que mexia apenas em documentação ou
    em manifestos de dependência não gerava análise alguma, enquanto master
    continuava com uma por linguagem — a regra de proteção code_scanning não
    conseguia comparar os dois lados e reportava "configurations not found",
    travando o merge. Substituído pelo advanced setup (.github/workflows/codeql.yml),
    sem filtro de caminho: as duas configurações (/language:actions e
    /language:rust) passam a existir em todo pull request

New Contributors

Full Changelog: v1.3.0...v1.4.0