Novidades no MPS 2024.3

O MPS 2024.3 introduz melhorias na interface de usuário, mecanismo interno reformulado em muitos componentes e TextGen com saída binária. Você também encontrará um melhor suporte a ícones e inúmeras atualizações na plataforma.

Confira abaixo a lista detalhada de melhorias.

Raízes de visualizações lógicas

Pasta-raiz para modelos transientes e de checkpoints

Agora a janela de ferramentas ProjectView contém três pastas-raízes, para manter a estrutura do projeto mais organizada:

  • [Nome do projeto]
  • Modules Pool
  • Checkpoints and Transient Models

A pasta Checkpoints and Transient Models é sempre mostrada abaixo da pasta Modules Pool e está sempre vazia, a menos que esteja disponível algum modelo transiente ou de checkpoint. Tais modelos são mostrados nesta pasta, em vez de no nível mais alto, como era antes.

Como efeito colateral, a nova pasta Checkpoints and Transient Models permite que a janela de ferramentas ProjectView se lembre das subárvores expandidas e comprimidas da estrutura do projeto depois da reinicialização do MPS.

Ativar prévias

Opção "Enable preview tab"

Agora o MPS respeita as opções a seguir para habilitar e desabilitar a aba de pré-visualização oferecida pela IntelliJ Platform. Estas opções garantem que o editor do MPS tenha o mesmo comportamento que os editores das outras ferramentas da JetBrains:

  • Settings | Editor | General | Editor Tabs | Opening Policy | Enable Preview Tab
  • Logical View | Behavior | Enable Preview Tab
Diálogos com design atualizado nas dicas de ferramentas 2

launchtests: opção de especificar o caminho do diretório de relatórios

Foi adicionada a nova opção reports dir à seção de opções de test configuration em scripts de build. O usuário pode especificar o diretório de saída onde os relatórios gerados de testes do JUnit deverão ser armazenados.

Inspector

Controle de condições de aplicabilidade de correções rápidas

Foi adicionada a nova seção applicable às definições Quick-Fix, para permitir que você controle a aplicabilidade de correções rápidas. O valor-padrão <always> garante aplicabilidade irrestrita.

Tratamento de ícones

Durante a geração, os ícones e imagens que usam caminhos relativos ao módulo não são mais copiados para junto dos locais onde serão usados individualmente. Em vez disso, eles são copiados uma só vez para o módulo de distribuição, na forma de arquivos de imagem, e ficam disponíveis para uso a partir deste local único. Isso traz dois benefícios imediatos: evita a duplicação de arquivos de imagem, economizando espaço em disco, e permite acessar as imagens a partir tanto do módulo de distribuição quanto do módulo de origem.

Ícones de constantes

Ícones de constantes

Além dos conceitos TextIcon e FileIcon, que já existiam, agora também está disponível o novo conceito ConstantFieldIcon. Ele permite que seja especificado um ícone através de uma referência a uma declaração concreta de campo estático contendo uma instância de javax.swing.Icon.

Saída binária do TextGen

Inspirados pela necessidade de um melhor tratamento de arquivos de ícones, adicionamos um novo mecanismo para produzir saída binária, em vez de em texto, durante o processo de geração de texto. A nova API consiste de uma operação write que manipula os dados diretamente como instâncias de byte[].

Janelas de ferramentas migradas de ProjectComponent

Todas as janelas de ferramentas, como Inspector, HierarchyView e Usages, foram reformuladas para não seguirem mais o mecanismo de componentes de projeto da IntelliJ Platform (ProjectComponent), já obsoleto há muito tempo. As mudanças na API foram mínimas, mas no caso de algumas janelas de ferramentas, mudou a forma como elas são obtidas a partir do código:

  • O método Project.getComponent() não retorna mais nenhuma das janelas de ferramentas.
  • Pode-se obter ferramentas implementadas como conceitos de ferramentas do MPS usando com.intellij.openapi.project.Project.tool <ToolConcept>.
  • Ferramentas usadas com frequência a partir do Java fornecem um método estático getInstance():
    • UsagesViewTool.getInstance()
    • InspectorTool.getInstance()
  • Tradicionalmente, a ferramenta Inspector também está disponível a partir de EditorContext.inspectorTool().

Componentes e serviços da IntelliJ Platform

Além das janelas de ferramentas, a maior parte da funcionalidade essencial do MPS foi reformulada para não usar mais o ApplicationComponent e o ProjectComponent do IntelliJ IDEA.

Anteriormente, o MPS dependia fortemente dos recursos da IntelliJ Platform para compor o aplicativo completo. Agora a maioria dos componentes legados foi refatorada para usar APIs atuais do MPS ou do IntelliJ IDEA (tais como os pontos de extensão e serviços de aplicativo e projeto do IntelliJ IDEA, os CoreComponents e extensões do MPS, etc.). Ainda restaram alguns poucos componentes inalterados, que a equipe do MPS planeja eliminar completamente na próxima versão.

Provavelmente, a maioria dos usuários não notará nenhuma diferença, a não ser uma inicialização mais rápida.

Consulte o Guia de Migração se o seu código usar algum mecanismo obsoleto de recuperação e por isso não conseguir localizar algum dos componentes da plataforma.

Mudança para a nova interface de usuário

Agora o MPS usa a nova interface de usuário. A versão antiga da interface ainda pode ser habilitada instalando o plug-in Classic UI.

Diversas correções de bugs

Como de costume, essa versão corrige alguns bugs. Você pode encontrar uma lista completa de todos os problemas que corrigimos aqui.

Atualizações da plataforma

Mudança para o JBR21

Estamos fazendo a transição do JetBrains Runtime 17 (JBR17) para o JetBrains Runtime 21 (JBR21). A partir do IntelliJ IDEA 2024.2, todas as atualizações do IDE virão com o JBR21, oferecendo segurança e desempenho aprimorados, bem como suporte de renderização do Wayland para Linux.

Detecção automática da configuração de proxy habilitada por padrão para novos usuários

O IntelliJ IDEA agora detecta automaticamente as configurações de proxy do sistema definidas na sua máquina e as usa por padrão, facilitando a interação perfeita com recursos e serviços externos.

Caixa de diálogo Customize Main Toolbar aprimorada

Redesenhamos o layout e o comportamento dos elementos da interface do usuário na caixa de diálogo Customize Main Toolbar, tornando-a mais intuitiva e organizada. Agora, ficou mais fácil pesquisar, adicionar e excluir ações na barra de ferramentas principal.

Aumento do limite padrão de abas

Aumentamos o limite padrão de abas no editor para 30. Isso significa que agora você pode manter mais abas abertas antes que o IDE comece a fechar aquelas usadas menos recentemente. Você pode controlar essa configuração em Settings | Editor | General | Editor Tabs.

Suporte para sintaxe matemática em arquivos Markdown

O IntelliJ IDEA agora pode renderizar nativamente expressões matemáticas em arquivos Markdown. Ao trabalhar com Markdown, você pode usar $ para inserir expressões matemáticas inline e $$ para blocos de código com conteúdo matemático.

Tags no widget Version Control

Demos às tags um nó dedicado no widget Version Control, facilitando sua verificação. O nó é exibido por padrão, mas, se preferir ocultá-lo, basta clicar no ícone de engrenagem e desmarcar a opção Show Tags.

Experiência de usuário aprimorada com a janela de ferramentas Log

Todas as configurações relacionadas à janela de ferramentas Log foram consolidadas em uma página de configurações dedicada, que você pode acessar por meio de Settings/Preferences | Version Control | Log ou através de um novo menu suspenso na barra de ferramentas da janela de ferramentas Log.

Nome do branch na tela Welcome

A tela Welcome agora mostra o nome do branch, o que ajuda a manter a organização ao lidar com várias versões do projeto e permite alternar facilmente entre os diretórios de trabalho.

Novo First Parent e No Merges em Graph Options

Adicionamos novas opções do Git para simplificar a visualização dos históricos de branches. Use a opção First Parent para focar nas alterações da linha principal, ocultando commits individuais dos merges. Como alternativa, você pode filtrar totalmente os commits de merges com a opção No Merges. Ambas as opções agora estão disponíveis no ícone Graph Options da janela de ferramentas Git, facilitando o rastreamento de alterações nos seus branches.

Melhorias no novo terminal
Beta

O novo terminal agora oferece processamento de comandos aprimorado, e o alinhamento de sua interface de usuário foi refinado, proporcionando uma experiência mais suave e intuitiva. O terminal agora é mais ágil e processa os comandos mais rapidamente. A alternância de sessão agora é perfeita, com retenção consistente de estado entre as abas para garantir que seu workflow não seja interrompido. A complementação automática acessa nomes de comandos, sinalizadores e caminhos mais rapidamente, reduzindo a digitação manual. Também introduzimos opções adicionais de personalização, inclusive para estilos de comando, nomes de sessão e variáveis de ambiente, proporcionando maior controle sobre o ambiente do terminal.

Guia de Migração

Para cada lançamento principal, preparamos instruções sobre como migrar de versões mais antigas do MPS para garantir que tudo corra bem. Por favor, revise-as com cuidado.