Novidades no MPS 2021.2

O MPS 2021.2 vem com um mecanismo de verificação ortográfica, pop-up de complementação automática, melhoramentos de VCS e muito mais.

Pop-up de complementação automática

A complementação automática de código, que normalmente é chamada através das teclas Ctrl/Cmd + Espaço, agora aparece automaticamente depois que você para de digitar, com um atraso de meio segundo por default. O recurso ainda pode ser aberto manualmente, se necessário. Saiba mais.

Melhorias em mudanças de empacotamento e desempacotamento no diff VCS

Melhorias em mudanças de empacotamento e desempacotamento no diff VCS

Mudanças de empacotamento agora estão muito mais flexíveis. É possível ter mudanças internas independentes dentro das mudanças de empacotamento e desempacotamento. Além disso, é possível ter várias mudanças de empacotamento e desempacotamento lado a lado. Os movimentos internos agora são detectados dentro de nós com IDs alterados.

Exibição melhorada de alterações nos atributos dos nós

Exibição melhorada de alterações nos atributos dos nós

Anteriormente, as células do editor para atributos não eram destacadas corretamente na caixa de diálogo Diff. Geralmente, todo o nó contendo o atributo era realçado se um atributo fosse adicionado ou excluído, em vez de apenas destacar o atributo em questão.

Mecanismo de verificação ortográfica genérico

Mecanismo de verificação ortográfica genérico

A funcionalidade MPS que emprega um mecanismo de verificação ortográfica do IntelliJ IDEA para verificar comentários e literais de string em busca de erros de digitação e sintaxe foi estendida para funcionar com qualquer texto que possa aparecer em uma célula de rótulo. Para indicar que o texto de uma célula deve ser verificado em um dicionário (conforme configurado em Preferences), você só precisa adicionar o estilo spellcheck à célula, na sua declaração de editor.

Para plataformas Rich Client (RCP), não esqueça de incluir o plug-in jetbrains.mps.editor.spellcheck na distribuição.

Versão de projeto para migrações

Versão de projeto para migrações

Nós lidamos com o cenário onde um projeto que foi migrado para uma versão mais recente do MPS é acessado por um desenvolvedor com uma versão mais antiga do MPS. O subsistema de migração agora rastreia a versão da plataforma MPS ao aplicar migrações e avisa caso um projeto que você estiver tentando abrir tiver migrado para uma versão mais recente. Isto ajuda a evitar a corrupção não intencional de modelos.

Escopo de referência otimizado

Há um mecanismo para compartilhar partes avaliadas do escopo durante a leitura de um único modelo. Foram introduzidas novas expressões em jmlang.constraints para escopos de compartilhamento: for model [ factory, key], visible roots [concept] e visible nodes [concept] como substituições para new ModelPlusImportedScope(model, rootsOnly, concept). As novas expressões são usadas para salvar o escopo de um modelo na memória cache, o que significa que ele só precisa ser registrado e calculado uma única vez.

Sem limitações ao modificar nós

Os autores de extensões devem selecionar o tipo de acesso a ser concedido ao escrever código que funcione com modelos MPS. Para operações SNode (por exemplo, setProperty(), addChild(), etc.), só era possível conceder command access, mesmo sem a interação da IU. Essa limitação foi eliminada e qualquer código que tenha write access para o modelo agora pode modificar os nós.

Radar de dicas de contexto

Radar de dicas de contexto

O recurso Tooltips agora possui uma funcionalidade chamada radar, que mostra quais células têm dicas de contexto. O radar de dicas de contexto pode ser ativado pressionando e segurando a tecla Ctrl.

Operador diamante

Agora é possível em baseLanguage usar o operador diamante Java em construtores para inferir parâmetros genéricos a partir do contexto. O operador diamante será ativado por default para código recém-escrito. Para ativá-lo nos seus construtores existentes, remova seus parâmetros de tipo existentes e defina infer type parameters como true no inspetor ou digite <> novamente e depois remova o parâmetro vazio.

Melhoria das propriedades em baseLanguage

As propriedades em baseLanguage agora são levadas em consideração corretamente na verificação de tipo. Não serão gerados erros para métodos não implementados quando uma propriedade herdar a interface ou métodos abstratos. Ao definir uma propriedade com tipo genérico, o tipo correto será usado para acessar a propriedade de uma instância.

Observe que o setter exposto para uma propriedade de tipo T retornará um objeto do tipo T, em vez de void.

“Show Diff” unificada

“Show Diff” unificada

O MPS agora mostra a diferença entre as versões inicial e alterada dos arquivos na aba do editor. Não importa como você invoca a ação Show Diff, o IDE abrirá a diff no editor por default.

Se você preferir rastrear alterações numa janela separada, você pode arrastar o arquivo desejado do editor. Se fizer isso, o IDE se lembrará disso e abrirá diffs futuras em uma janela separada.

Outras melhorias

Nova opção de navegação em “Preferences/Settings”

Nova opção de navegação em “Preferences/Settings”

Novas setas estão localizadas no canto superior direito da janela em Preferences/Settings para ajudá-lo a navegar através das seções. Elas permitem que você salte entre as seções.

Janelas de ferramentas arrasta-e-solta

Agora, ficou mais fácil arrastar e soltar uma janela de ferramentas para movê-la dentro da janela principal do IDE ou para torná-la uma janela separada. Você pode arrastar uma janela de ferramentas clicando e segurando a sua barra de nome e soltando-a em qualquer local realçado.

Pré-visualização de HTML integrada

Melhorias no terminal

Existem novas opções para o formato do cursor no terminal embutido. Além disso, o terminal também agora oferece suporte para atalhos usando Option (⌥) como uma tecla Meta. Por exemplo, você pode usar os seguintes atalhos:

  • ⌥+F – ir para a próxima palavra
  • ⌥+B – retornar uma palavra
  • ⌥+D – excluir a próxima palavra