Das ist neu in MPS 2019.3

Aktion für Definitions-Schnellansicht

Aktion für Definitions-Schnellansicht

Die Kurzdefinitionen werden wie in IntelliJ IDEA verwendet. Klicken Sie auf einen Knoten und halten Sie Strg-Umschalt-I gedrückt, um die Definition des Knotens in einem Popup aufzurufen. In diesem Popup können Sie navigieren, andere Knoten auswählen oder eine Suche durchführen. Auf diese Weise müssen Sie nicht jedes Mal eine neue Registerkarte öffnen, wenn Sie einen schnellen Blick auf einen Knoten werfen möchten.

Weitere Informationen

Entladen von Modellen

Entladen von Modellen

Sie können jetzt den Speicherbedarf verringern, indem Sie alle Modelle explizit aus dem Speicher entfernen. Klicken Sie dazu auf die Speicheranzeige oder richten Sie mithilfe der Registry-Aktion eine regelmäßige Bereinigung in einem bestimmten Zeitabstand ein (der Parameter wird in Sekunden angegeben). Aktuell hat diese Funktion einen experimentellen Status, und wir planen, sie in zukünftigen Versionen zu verbessern.

Weitere Informationen

Eigenständige Generatormodule

Eigenständige Generatormodule und mehrere Generatoren pro Sprache

Sie können jetzt mehrere Generatoren pro Sprache erstellen und sie entweder innerhalb einer Sprache hosten (wie in früheren Versionen) oder sie neben einer Sprache als reguläres Modul auf der obersten Ebene anlegen. Durch die Verwendung von Generierungsplänen können Sie mehrere Generatoren optimal nutzen. Um den Übergang zu vereinfachen, wird ohne expliziten Generierungsplan weiterhin nur ein Sprachgenerator pro Modell verwendet. Der neue Generator kann aus dem Kontextmenü der Sprache erstellt werden, und im dazugehörigen Dialogfeld können Sie mithilfe eines neuen Kontrollkästchens auswählen, ob der Generator eigenständig sein soll.

Konzept- und Schnittstellenkonvertierung

Konzept- und Schnittstellenkonvertierung

Mit einer neuen Intention können Sie Konzepte in Schnittstellenkonzepte und umgekehrt konvertieren. Dies kann beim Erstellen einer Sprachstruktur verwendet werden; Verwendungen werden dabei nicht geändert.

Erstellen anhand Verwendung

Erstellen anhand Verwendung

Sie können jetzt Konzepte, Methoden und Klassen anhand von Verwendungen im Code erstellen. Die Intention erstellt Klassen aus new-Anweisungen, Methoden aus Ausdrücken und Konzepte und Schnittstellen aus Child/Referenz-Rollen sowie aus extends/implements-Verwendungen.

Generieren gültiger Java-Bezeichner

Generieren gültiger Java-Bezeichner aus INamedConcepts

Mit einer neuen Generator-Anweisung können Sie aus einem beliebigen INamedConcept einen gültigen Java-Bezeichner generieren. Ungültige Symbole werden entfernt, die Groß-/Kleinschreibung wird angepasst und bei Bedarf wird ein Präfix hinzugefügt, um einen eindeutigen Bezeichner zu erhalten.

Find Usages: Neue Anweisung zum Anzeigen eines beliebigen Suchergebnisses beim Schreiben eines Finders

In früheren MPS-Versionen erlaubte die add result-Anweisung auf dem Finder nur auf <>-Knoten basierende Suchergebnisse. Mit add raw result kann der Sprachdesigner jetzt jedes Ergebnis anzeigen, das in der Find Usages-Ansicht visualisiert werden kann.

Behobene Probleme

Generator: Warnung bei dynamischen Referenzen steuern

Der MPS-Generator gibt eine Warnung aus, wenn das Auflösen einer dynamischen Referenz fehlschlägt. Dies führt zu vielen Warnungen, denn nicht alle Generatoren halten sich strikt an das Konzept der Referenzkonstruktion mit Label-Mappings. Deshalb können Sie nun mit einer neuen Einstellung festlegen, ob die Warnung angezeigt werden soll.

Weitere Informationen

Schnelleres Laden von JavaStubs Von Kunden gewünscht

Wir haben die Performance beim Laden von Stub-Modellen deutlich verbessert, insbesondere aus großen und untereinander verbundenen Jar-Gruppen. Bei unserem Testprojekt sind die Ladezeiten jetzt 2- bis 3-mal kürzer als in v2019.2 (6 Sekunden statt 18 Sekunden). Dieser Leistungsschub wurde auch nach MPS 2019.1 und MPS 2019.2 rückportiert.

Buildsprache: explizite Modell-Roots

Bisher interpretierte MPS nur Dateien mit den Endungen *.mps und *.mpsr als Modelle. Bei benutzerdefinierter Modellpersistenz sind jedoch auch andere Dateinamen möglich. Um sicherzustellen, dass beim Builden eines Moduls alle benötigten Modelldateien integriert werden, kann im Build-Skript eine explizite Modell-Root-Deklaration für ein Modul angegeben werden. Dies erleichtert die Verwendung benutzerdefinierter Dateinamen.

Dokumentation

Die Codebeispiele für die benutzerdefinierte Persistenz und die Dokumentation für den neuen Buildlösungs-Assistenten wurden aktualisiert. Die Generierungsfehler im Math-Beispiel und die defekten Links auf den Dokumentationsseiten wurden behoben. Wir haben auch mehrere Dialoge und Toolfenster korrigiert.

Basissprache

Binär- und Oktalliterale werden jetzt unterstützt, und Typparameter in Javadocs werden korrekt gehandhabt. Viele weitere Probleme wurden ebenfalls behoben.

Quick-Fix zum Aktualisieren von Modul-/Modellidentitätsobjekten

MPS erkennt veraltete Namen und bietet einen Aktualisierungs-Quick-Fix für Objekte der SModel-Sprache.

Weitere Informationen

Story-Aktualisierung für Modul-Facets

Beim Modul-Facet „Tests“ haben Sprachdesigner nun völlige Freiheit; MPS verlangt nicht mehr, dass das Facet für das Language-Modul vorhanden ist.

Weitere Informationen

Surround with...

Die Aktion Surround with… (Umschließen mit…) ist jetzt auch verfügbar, wenn mehrere Knoten ausgewählt sind. Bisher war die Aktion nur für einzelne Knoten verfügbar.

Aktion „Show Affected Files“ im „Root History“-Dialog

Sie können jetzt für eine Revision in einem Root-Verlauf nachsehen, welche andere Dateien in derselben Revision geändert wurden.

Root-Verlauf für Modelle bei Per-Root-Persistenz

Die in 2019.2 eingeführte Aktion „Show Root History“ war bisher für Roots aus Modellen verfügbar, die in einer einzigen Datei gespeichert waren. Jetzt werden auch Modelle mit Per-Root-Persistenz unterstützt.

Aktualisierte Favoritenansicht

MPS verwendet das aktiv entwickelte Favoriten-Tool der IntelliJ-Plattform.

Weitere Informationen

Metasprachen-Styling

Alle Metasprachen verfügen nun über einen einheitlichen Stil und eine einheitliche Benutzerführung unter anderem in Bezug auf Tastaturnavigation, Verhalten von Platzhalterzellen im Editor und Aussehen von neuen Roots.