Novidades no MPS 2021.1

O MPS 2021.1 apresenta suporte para Java Anotation, muitas melhorias para VCS, Apple Silicon e muito mais.

Editor

Aumentar e diminuir o zoom

O tamanho da fonte pode ser ajustado rapidamente em uma janela aberta do editor pressionando a tecla Control e rolando com a roda do mouse. Como as alterações no tamanho da fonte não são persistentes, quando você reabrir o arquivo, o tamanho do texto será redefinido para o valor padrão. É possível habilitar/desabilitar esse recurso na seção Preferences | Editor | General: Change font size with Ctrl/Cmd+Mouse Wheel.

Melhoria no desempenho do layout de recuo

A implementação do layout de indentação se tornou incremental em alguns casos centrais, o que reduzirá o tempo de renderização para modelos grandes em linguagens que usam principalmente o layout de recuo (como a BaseLanguage). Esse recurso pode ser desativado com a opção da VM mps.indent_layout.disable_incremental.

Opções para espessura de fontes

Opções para espessura de fontes

É essencial escolher uma fonte do editor que você possa ver sem dificuldade por longos períodos de tempo. As configurações de tipografia incluídas recentemente deixam essa escolha um pouco mais fácil e personalizada. Na versão v2021.1, você pode ajustar a espessura dos seus estilos de fonte principal e negrito em Preferences | Editor | Fonts.

Sistema de Controle de Versão

Melhorias na anotação raiz

Melhorias na anotação raiz

O suporte para Sistemas de Controle de Versão adiciona melhorias à anotação raiz. Um novo algoritmo para calcular alterações de revisão com rastreamento de movimento agora é usado para a anotação raiz. As cores das linhas/células anotadas são determinadas usando apenas as revisões em que a raiz foi alterada. As células anotadas agora têm o grupo de menu de contexto especial quando a coluna de anotação está aberta. Você pode aplicar Copy Revision Number, Show Diff e outras ações a cada célula anotada.

Caixa de diálogo Diff para submissões mescladas

Caixa de diálogo Diff para submissões mescladas

A caixa de diálogo diff está habilitada para submissões mescladas no log do Git. O visualizador exibe três painéis: o painel central para o modelo mesclado e os painéis esquerdo e direito para os modelos dos dois branches mesclados.

Sincronizar rolagem no editor Diff

Sincronizar rolagem no editor Diff

Agora, é possível desativar a sincronização de rolagem do editor na caixa de diálogo Diff com um botão.

Gráfico de revisões usado para anotação raiz e histórico de raiz/nó

A anotação raiz e os algoritmos de histórico de raiz/nó eram baseados anteriormente na lista ordenada de revisões de arquivo, calculando as alterações para a raiz entre duas revisões adjacentes. No entanto, era possível que essas revisões fossem de dois branches diferentes e, nesse caso, as alterações obtidas não faziam sentido. As revisões de merge também não eram tratadas corretamente. As alterações das rodadas de revisão mais antigas podiam ser exibidas erroneamente como alterações da revisão de mesclagem mais recente. Agora, o algoritmo considera o gráfico de revisões ao formular o histórico de alterações.

Save to Shelf

Nossa nova ação Save to Shelf permite que você copie suas alterações para o Shelf enquanto as mantém nas alterações locais. Você pode acessar esta ação através das teclas ⇧⌘A no macOS (Ctrl+Shift+A no Windows ou Linux) e digitando ‘Save to Shelf’.

Generator

Melhor acesso a variáveis de macro $LOOP$

Melhor acesso a variáveis de macro $LOOP$

Agora, é possível faze referência ao nó de entrada de uma macro LOOP usando uma expressão LOOP.inputNode, dispensando a necessidade de usar uma macro VAR. O índice de LOOP também pode ser acessado no mesmo namespace usando LOOP.index e substituindo a variável de contexto definida pelo usuário anterior.

Instrução Transform atualizada na declaração GenPlan

Para melhorar a extensibilidade dos Planos de Geração, agora existe um novo mecanismo para incluir linguagens ou geradores que são desconhecidos na ferramenta de design de planos. Agora, com a instrução transform, o designer de linguagens pode incluir uma linguagem que visa ou estende uma determinada linguagem. Quando dizemos que a Linguagem B “visa” a Linguagem A, significa que o gerador da Linguagem B produz construtos da Linguagem A.

Melhoria em modelos compilados

Com o MPS 2021.1, os modelos compilados agora verificam se os filhos estão corretamente colocados nos nós pais caso essa opção esteja ativa.

Saiba mais

Diversos

Java Compiler para módulos do MPS com faceta Java

Muita coisa mudou na nossa abordagem à compilação Java de módulos MPS. Isso soluciona um dos nossos issues mais votados: o suporte para Processamento de Anotações. Trocamos a infraestrutura Java Compiler do MPS para utilizar o conjunto de APIs javax.tools.JavaCompiler e, agora, o MPS pode usar qualquer compilador que implemente essa API padrão. A partir da versão 2021.1, o MPS é executado com o compilador padrão configurado para essa API, com a opção de usar o Eclipse Compiler for Java (ECJ).

Saiba mais

Versão do MPS de linha de base para migrações de projetos

Quando um novo projeto for criado, uma versão de “referência” do MPS agora será salva. Isso não é válido para migrações de projetos de versões do MPS anteriores à versão base do projeto. Isso dá aos autores a flexibilidade de fornecer às migrações de projetos uma versão especificada de “referência” desejada, que eles podem modificar na interface de migração do projeto usando o novo método “getBaselineVersion():int”.

Saiba mais

Melhorias na refatoração “Method Signature”

Melhorias na refatoração “Method Signature”

A caixa de diálogo da refatoração Method Signature agora inclui uma maneira de especificar valores padrão para novos argumentos ou argumentos cujos tipos foram alterados. Quando um parâmetro é removido, mas ainda é usado no método, uma nova variável local é introduzida para que a referência não seja perdida. Se a chamada de um método não corresponder à sua assinatura, uma ação de intenção permitirá que você altere a assinatura do método para alinhá-lo a essa chamada.

Saiba mais

Novas opções em comentários BaseLanguage

A linguagem lang.text recebeu vários recursos novos que melhoram diretamente os comentários de uma ou várias linhas em BaseLanguage.

  • A seleção de texto agora permite realçar apenas partes das linhas ao selecionar para cima e para baixo.
  • Ações como aplicar negrito, itálico e sublinhado funcionam na seleção.
  • A ação de copiar/colar de e para texto simples foi implementada.
  • Agora há suporte para listas numeradas e com marcadores.

Expressões aprimoradas em lang.smodel

As expressões model.roots(), model.rootsIncludingImported() e model.nodesIncludingImported() agora oferecem suporte a #expression para especificar conceitos, exatamente como acontece com model.nodes().

Controle a visibilidade dos módulos distribuídos com o seu plug-in

Plug-ins informam ao MPS sobre os módulos para os quais eles contribuem por meio de um ponto de extensão com.intellij.mps.LanguageLibrary. Agora, pontos de extensão podem fornecer um atributo opcional hide="true", que torna os módulos do plug-in qualificados para serem filtrados por um padrão especificado com com.intellij.mps.VisibleModuleMask.

Saiba mais

Outras melhorias

Pré-visualização de HTML integrada

Pré-visualização de HTML integrada

A nova pré-visualização em navegador integrada permite que você veja o resultado dos arquivos HTML rapidamente. Para abri-lo, clique no ícone com o logotipo do MPS no widget no canto superior direito do editor. Se você fizer quaisquer alterações no HTML ou se alterar os arquivos CSS e JavaScript vinculados, a pré-visualização será atualizada na mesma hora.

Suporte para Apple Silicon

Agora, você pode usar o MPS em Macs com um chip M1. Para começar, baixe o instalador do JetBrains MPS para Apple Silicon diretamente no nosso site ou obtenha-o no JetBrains Toolbox App.

Configurações de importação automática

Com o MPS 2021.1, a caixa de diálogo Import Settings, que aparece todas as vezes que você instala uma nova versão do MPS, apenas será exibida quando você não tiver os ajustes e as configurações apropriados.

Acessibilidade melhorada

Nesta versão, adicionamos mais rótulos aos elementos da interface do usuário na tela de boas-vindas, na exibição Project Structure e no log do VCS. Esses elementos, assim como os ícones da medianiz, agora são lidos corretamente quando você usa um leitor de tela. Também estamos trabalhando para melhorar o suporte à acessibilidade para usuários macOS.