Nouveautés de MPS 2021.1

MPS 2021.1 apporte la prise en charge des annotations Java et d'Apple Silicon, de nombreuses améliorations du VCS, et bien plus.

Éditeur

Zoom avant et arrière

La taille de la police peut être rapidement ajustée dans une fenêtre d'éditeur ouverte en maintenant la touche Contrôle enfoncée et en faisant tourner la molette de la souris. Les modifications de la taille de la police ne sont pas persistantes. Ainsi, lorsque vous ouvrez de nouveau le fichier, le texte reprend la taille par défaut. Vous pouvez activer/désactiver cette fonctionnalité dans Preferences | Editor | General, dans la section Change font size with Ctrl/Cmd+Mouse Wheel.

Amélioration des performances pour la mise en page indentée

L'implémentation de la mise en page indentée est maintenant incrémentale dans certains cas importants, ce qui réduit le temps de rendu pour les grands modèles dans les langages utilisant principalement l'indentation (comme BaseLanguage). Cette fonctionnalité peut être désactivée avec l'option VM mps.indent_layout.disable_incremental.

Options pour le poids de la police

Options pour le poids de la police

Il est important de choisir une police d'éditeur avec laquelle vous pouvez travailler confortablement pendant plusieurs heures d'affilée. Les paramètres de typographie que nous avons récemment ajoutés vous permettent de personnaliser facilement le style de police. Dans la version 2021.1, vous pouvez ajuster le poids de la police principale et de la police grasse dans Preferences | Editor | Fonts.

Système de contrôle de version

Améliorations de la fonction d'annotation racine

Améliorations de la fonction d'annotation racine

La prise en charge du système de contrôle de version apporte des améliorations à l'annotation racine. Un nouvel algorithme de calcul des changements de révision avec suivi des mouvements est maintenant utilisé pour l'annotation racine. Les couleurs des lignes/cellules annotées sont déterminées uniquement sur la base des révisions dans lesquelles la racine a été modifiée . Les cellules annotées disposent désormais des options du menu contextuel lorsque la colonne d'annotation est ouverte. Vous pouvez notamment appliquer les actions Copy Revision Number et Show Diff à chaque cellule annotée.

Boîte de dialogue Diff pour les commits fusionnés

Boîte de dialogue Diff pour les commits fusionnés

La boîte de dialogue Diff est activée pour les commits fusionnés dans le journal Git. La visionneuse affiche trois panneaux : le panneau central pour le modèle fusionné, et les panneaux gauche et droit pour les modèles des deux branches fusionnées.

Synchronisation du défilement dans l'éditeur de Diff

Synchronisation du défilement dans l'éditeur de Diff

Il est désormais possible de désactiver la synchronisation du défilement de l'éditeur dans la boîte de dialogue Diff à l'aide d'un bouton.

Graphique des révisions utilisé pour l'annotation racine et l'historique des racines/noeuds

Les algorithmes d'annotation racine et d'historique des racines/noeuds étaient auparavant basés sur la liste ordonnée des révisions de fichiers, en calculant les changements de racine entre deux révisions adjacentes. Il était toutefois possible que ces révisions proviennent de deux branches différentes, auquel cas les changements obtenus n'avaient aucun sens. Les révisions de fusion n'étaient pas gérées correctement non plus. Les modifications des anciens cycles de révision pouvaient s'afficher par erreur comme des modifications de la révision de fusion la plus récente. L'algorithme prend désormais en compte le graphique des révisions lorsqu'il formule l'historique des modifications.

Save to Shelf

Notre nouvelle action Save to Shelf vous permet de copier vos modifications dans Shelf tout en les conservant dans les modifications locales. Pour accéder à cette action, appuyez sur ⇧⌘A sous macOS (Ctrl+Maj+A sous Windows ou Linux) et saisissez « Save to Shelf ».

Générateur

Amélioration de l'accès aux variables de macro $LOOP$

Amélioration de l'accès aux variables de macro $LOOP$

Il est désormais possible de faire référence au nœud d'entrée d'une macro LOOP en utilisant une expression LOOP.inputNode. Vous n'avez donc plus besoin d'utiliser une macro VAR. Vous pouvez aussi accéder à l'index de LOOP sous le même espace de noms en utilisant LOOP.index pour remplacer la précédente variable de contexte définie par l'utilisateur.

Mise à jour de l'instruction Transform dans la déclaration GenPlan

Pour améliorer l'extensibilité du plan de génération de modèles, il existe un nouveau mécanisme permettant d'inclure des langages ou des générateurs qui sont inconnus du concepteur de plan. Maintenant, avec l'instruction transform, le concepteur de langage peut inclure un langage qui cible ou étend un langage donné. Lorsque nous disons que le langage B « cible » le langage A, nous voulons dire que le générateur du langage B produit des constructions du langage A.

Amélioration des modèles compilés

Avec MPS 2021.1, les modèles compilés vérifient désormais si les enfants sont correctement placés dans les nœuds parents si l'option est activée.

En savoir plus

Divers

Compilateur Java pour modules MPS avec facette Java

Beaucoup de choses ont changé dans notre approche de la compilation Java des modules MPS. Cela répond à l'une des demandes ayant recu le plus de votes : la prise en charge de l'outil Annotation Processing. Nous avons changé l'infrastructure du compilateur Java MPS pour utiliser l'ensemble d'API javax.tools.JavaCompiler, afin que MPS puisse utiliser n'importe quel compilateur qui implémente cette API standard. Depuis la version 2021.1, MPS fonctionne avec le compilateur par défaut configuré pour cette API, avec une option pour utiliser l'Eclipse Compiler for Java (ECJ).

En savoir plus

Version de référence de MPS pour les migrations de projets

Lorsqu'un nouveau projet est créé, une version MPS « de référence » est désormais enregistrée. Il n'est pas possible de transférer des projets de précédentes versions de MPS vers la nouvelle version. Les auteurs ont ainsi la possibilité de donner aux migrations de projet une version "de référence", qu'ils peuvent modifier dans l'interface de migration de projet en utilisant la nouvelle méthode "getBaselineVersion():int".

En savoir plus

Améliorations de la refactorisation Method Signature

Améliorations de la refactorisation Method Signature

Le dialogue de la refactorisation Method Signature comprend maintenant un moyen de spécifier des valeurs par défaut pour les nouveaux arguments ou les arguments dont les types ont changé. Lorsqu'un paramètre est supprimé mais qu'il est toujours utilisé dans la méthode, une nouvelle variable locale est introduite afin que la référence ne soit pas perdue. Si l'appel d'une méthode ne correspond pas à sa signature, une action d'intention vous permet de modifier la signature de la méthode pour la faire concorder avec l'appel.

En savoir plus

Nouvelles options dans les commentaires BaseLanguage

Le langage lang.text a été doté de plusieurs nouvelles capacités, qui améliorent directement les commentaires d'une ou plusieurs lignes dans BaseLanguage.

  • Désormais, lors de la sélection dans les positions supérieure et inférieure, la sélection de texte vous permet de mettre en évidence une partie d'une ligne seulement.
  • Les actions telles que gras, italique et souligner fonctionnent sur la sélection.
  • Le copier-coller depuis et vers du texte simple a été implémenté.
  • Les listes à puces et numérotées sont désormais prises en charge.

Amélioration des expressions dans lang.smodel

Les expressions model.roots(), model.rootsIncludingImported() et model.nodesIncludingImported() prennent désormais en charge #expression pour spécifier les concepts, tout comme model.nodes() le fait.

Contrôle de la visibilité des modules distribués avec votre plugin

Les plugins indiquent à MPS les modules auxquels ils contribuent au moyen d'un point d'extension com.intellij.mps.LanguageLibrary. Les points d'extension peuvent désormais fournir un attribut facultatif hide="true", ce qui rend les modules du plugin éligibles pour être filtrés par un schéma spécifié avec com.intellij.mps.VisibleModuleMask.

En savoir plus

Autres améliorations

Aperçu HTML intégré

Aperçu HTML intégré

Le nouvel aperçu intégré au navigateur vous permet de prévisualiser rapidement des fichiers HTML. Pour l'ouvrir, cliquez sur l'icône avec le logo MPS dans le widget en haut à droite de l'éditeur. Si vous apportez des modifications au HTML ou si vous modifiez les fichiers CSS et JavaScript liés, l'aperçu répercutera immédiatement ces changements.

Prise en charge d'Apple Silicon

Vous pouvez maintenant utiliser MPS sur les Macs ayant une puce M1. Pour commencer, téléchargez le programme d'installation de JetBrains MPS pour Apple Silicon directement sur notre site web ou obtenez-le à partir de l'application JetBrains Toolbox App.

Paramètres d'auto-importation

Avec MPS 2021.1, la boîte de dialogue Import Settings qui apparaissait chaque fois que vous installiez une nouvelle version de MPS s'affichera seulement si vous ne disposez pas des paramètres et configurations appropriés.

Amélioration de l'accessibilité

Dans cette version, nous avons ajouté davantage de libellés aux éléments de l'interface utilisateur sur l'écran de bienvenue, dans la vue Project Structure et dans le journal du VCS. Ces éléments, ainsi que les icônes de la gouttière, peuvent désormais être lus correctement par un lecteur d'écran. Nous travaillons également à l'amélioration de la prise en charge de l'accessibilité pour les utilisateurs de macOS.