Das ist neu in MPS 2021.1

MPS 2021.1 bietet Unterstützung für Java-Annotationen, zahlreiche VCS-Verbesserungen, Apple-Silicon-Unterstützung und vieles mehr.

Editor

Zoomfunktion

Die Schriftgröße in einem geöffneten Editorfenster kann jetzt sehr einfach angepasst werden, indem Sie mit gedrückter Strg/Cmd-Taste das Mausrad drehen. Die Änderung der Schriftgröße ist nicht dauerhaft. Wenn Sie die Datei erneut öffnen, wird der Text wieder in der Standardgröße angezeigt. Sie können diese Funktion unter Preferences | Editor | General mit folgender Einstellung ein- und ausschalten: Change font size with Ctrl/Cmd+Mouse Wheel.

Verbesserte Performance bei Einrückungslayout

Die Implementierung des Einrückungslayouts (indent layout) erfolgt in einigen wichtigen Fällen inkrementell. Dies verkürzt die Rendering-Zeit bei großen Modellen in Sprachen, die hauptsächlich das Einrückungslayout verwenden (z. B. BaseLanguage). Diese Funktion kann mit der VM-Option mps.indent_layout.disable_incremental deaktiviert werden.

Einstellbare Schriftdicke

Einstellbare Schriftdicke

Die Auswahl einer Editor-Schriftart, die Ihren Augen auch nach stundenlanger Betrachtung nicht zusetzt, ist von entscheidender Bedeutung. Die kürzlich hinzugefügten Typografie-Einstellungen erleichtern diese Auswahl und ermöglichen individuellere Einstellungen. In v2021.1 können Sie unter Preferences | Editor | Fonts die Dicke der verwendeten Normal- und Fettschrift optimieren.

Versionsverwaltungssystem

Verbesserungen bei Root-Annotation

Verbesserungen bei Root-Annotation

Die Versionierungsunterstützung wurde um Verbesserungen hinsichtlich der Root-Annotation ergänzt. Zur Berechnung von Revisionsänderungen wird jetzt für die Root-Annotation ein neuer Algorithmus mit Bewegungsverfolgung verwendet. Die Farben für Zeilen/Zellen mit Annotationen werden nur anhand der Revisionen bestimmt, bei denen der Root geändert wurde. Die annotierten Zellen verfügen jetzt über eine spezielle Kontextmenügruppe, wenn die Annotation-Spalte geöffnet ist. Sie können auf jede annotierte Zelle Aktionen wie Copy Revision Number, Show Diff usw. anwenden.

Diff-Dialog für Merge-Commits

Diff-Dialog für Merge-Commits

Der Diff-Dialog ist für Merge-Commits im Git-Log aktiviert. Die Anzeige ist in drei Bereiche geteilt: In der Mitte wird das durch den Merge-Vorgang entstandene Modell angezeigt, während links und rechts die Modelle der beiden zusammengeführten Branches zu sehen sind.

Synchronisiertes Scrollen im Diff-Editor

Synchronisiertes Scrollen im Diff-Editor

Die Bildlaufsynchronisation im Diff-Dialog kann jetzt mit einer Schaltfläche ausgeschaltet werden.

Verwendung des Revisionsdiagramms für Root-Annotation und Root-/Knoten-Verlauf

Die Algorithmen für die Root-Annotation und den Root-/Knoten-Verlauf basierten zuvor auf der geordneten Liste der Dateirevisionen; es wurden jeweils die Root-Änderungen zwischen zwei benachbarten Revisionen berechnet. Diese Revisionen stammten jedoch bisweilen aus zwei verschiedenen Branches, und dann ergaben die resultierenden Änderungen keinen Sinn. Merge-Revisionen wurden ebenfalls nicht korrekt behandelt. Änderungen aus älteren Revisionsrunden wurden zum Teil fälschlicherweise der neueren Merge-Revision zugerechnet. Der Algorithmus berücksichtigt jetzt das Revisionsdiagramm bei der Bestimmung des Änderungsverlaufs.

Im Shelf speichern

Mit der neuen Aktion Save to Shelf können Sie Ihre Änderungen im Shelf speichern, während Sie sie auch in den lokalen Änderungen behalten. Um auf diese Aktion zuzugreifen, drücken Sie ⇧⌘A unter macOS (Strg+Umschalt+A unter Windows oder Linux) und geben Sie „Save to Shelf“ ein.

Generator

Verbesserter Zugriff auf $LOOP$-Makrovariablen

Verbesserter Zugriff auf $LOOP$-Makrovariablen

Sie können jetzt auf den Eingabeknoten eines LOOP-Makros mit einem LOOP.inputNode-Ausdruck verweisen. Dadurch entfällt die Notwendigkeit, ein VAR-Makro zu verwenden. Der Index der LOOP ist außerdem als LOOP.index in demselben Namensraum zugänglich und ersetzt die bisher verwendete benutzerdefinierte Kontextvariable.

Aktualisierte Transform-Anweisung in GenPlan-Deklaration

Um die Erweiterbarkeit des Generierungsplans zu verbessern, können mit einem neuen Mechanismus Sprachen oder Generatoren inkludiert werden, die dem Plandesigner nicht bekannt sind. Mit der Anweisung transform kann der Sprachdesigner eine Sprache inkludieren, die auf eine bestimmte Sprache abzielt oder diese erweitert. Wenn wir sagen, dass Sprache B auf Sprache A „abzielt“, meinen wir damit, dass der Generator von Sprache B Konstrukte in der Sprache A erzeugt.

Verbesserungen bei kompilierten Vorlagen

Wenn die entsprechende Option aktiv ist, prüfen kompilierte Vorlagen in MPS 2021.1, ob untergeordnete Elemente ordnungsgemäß in übergeordneten Knoten untergebracht sind.

Weitere Informationen

Verschiedenes

Java-Compiler für MPS-Module mit Java-Facet

Bei der Java-Kompilierung von MPS-Modulen hat sich eine Menge geändert. Dabei ging es uns um eines der meistvotierten Tickets: Unterstützung für die Annotation-Verarbeitung. Wir haben die Java-Compiler-Infrastruktur in MPS auf die Verwendung der javax.tools.JavaCompiler-APIs umgestellt. Auf diese Weise kann MPS jetzt jeden Compiler verwenden, der diese Standard-API implementiert. Ab Version 2021.1 verwendet MPS den für diese API konfigurierten Standardcompiler, mit der Option, den Eclipse Compiler for Java (ECJ) zu verwenden.

Weitere Informationen

MPS-Basisversion für Projektmigrationen

Bei der Erstellung eines neuen Projekts wird jetzt eine MPS-Basisversion (baseline version) gespeichert. Projektmigrationen von älteren MPS-Versionen als der Basisversion des Projekts werden nicht angewendet. Dies gibt Autoren die Flexibilität, Projektmigrationen eine bestimmte gewünschte Basisversion zuzuweisen. Diese kann in der Projektmigrationsoberfläche mit der neuen Methode „getBaselineVersion():int“ geändert werden.

Weitere Informationen

Verbessertes Refactoring von Methodensignaturen

Verbessertes Refactoring von Methodensignaturen

Das Refactoring Method Signature bietet jetzt die Möglichkeit, für neue Argumente oder solche, deren Typ geändert wurde, Standardwerte vorzugeben. Wird ein entfernter Parameter weiterhin in der Methode verwendet, so wird eine neue lokale Variable eingeführt, damit die Referenz nicht verloren geht. Wenn der Aufruf einer Methode nicht deren Signatur entspricht, können Sie mit einer Intention-Aktion die Methodensignatur an den Aufruf anpassen.

Weitere Informationen

Neue Optionen in BaseLanguage-Kommentaren

Die lang.text-Sprache wurde um neue Fähigkeiten erweitert, die in direkten Verbesserungen für ein- und mehrzeilige Kommentare in der BaseLanguage resultieren.

  • Beim Auswählen von Text nach oben oder unten ist es jetzt möglich, nur einen Teil der Zeilen zu markieren.
  • Aktionen wie Fett, Kursiv oder Unterstrichen wirken sich auf die Auswahl aus.
  • Das Kopieren bzw. Einfügen als unformatierter Text ist jetzt möglich.
  • Listen mit Aufzählungszeichen oder Nummerierung werden jetzt unterstützt.

Verbesserte Ausdrücke in lang.smodel

Die Ausdrücke model.roots(), model.rootsIncludingImported() und model.nodesIncludingImported() unterstützen jetzt wie model.nodes() die Verwendung von #expression zur Spezifizierung von Konzepten.

Sichtbarkeitsangabe für Module, die mit Ihrem Plugin verteilt werden

Plugins informieren MPS mithilfe des Erweiterungspunkts com.intellij.mps.LanguageLibrary über Module, zu denen sie beitragen. Erweiterungspunkte können jetzt optional ein Attribut hide="true" angeben. Dadurch können die Module des Plugins mithilfe eines Musters gefiltert werden, die in com.intellij.mps.VisibleModuleMask angegeben wird.

Weitere Informationen

Andere Verbesserungen

Integrierte HTML-Vorschau

Integrierte HTML-Vorschau

Mit der neuen integrierten Browser-Vorschau können Sie sich unkompliziert HTML-Dateien anzeigen lassen. Um die Vorschau zu öffnen, klicken Sie im Widget in der oberen rechten Ecke des Editors auf das Symbol mit dem MPS-Logo. Wenn Sie Änderungen am HTML-Code vornehmen oder die verknüpften CSS- und JavaScript-Dateien ändern, wird die Vorschau sofort aktualisiert.

Apple-Silicon-Unterstützung

MPS kann jetzt auf Macs mit M1-Chip verwendet werden. Um loszulegen, laden Sie das Installationsprogramm von JetBrains MPS für Apple Silicon direkt von unserer Website oder über die JetBrains Toolbox App herunter.

Autoimport-Einstellungen

Der Dialog Import Settings, der bei jeder Installation einer neuen MPS-Version angezeigt wurde, wird ab MPS 2021.1 nur dann geöffnet, wenn die entsprechenden Einstellungen und Konfigurationen nicht vorhanden sind.

Verbesserte Barrierefreiheit

In dieser Version haben weitere UI-Elemente auf dem Begrüßungsbildschirm, in der Projektstruktur-Ansicht und im VCS-Protokoll Beschriftungen erhalten. Diese Elemente sowie die Randleistensymbole werden jetzt von Screenreadern korrekt vorgelesen. Wir arbeiten daran, die Barrierefreiheit auch auf macOS zu verbessern.