MPS 2019.3の新機能

Quick Definitionアクション

Quick Definitionアクション

Quick Definitionは、IntelliJ IDEAの対応する機能に似ています。 ノードをクリックしてCtrl-Shift-Iを長押しすると、ノードの定義を含むポップアップが表示されます。 このポップアップではナビゲートし、他のノードを選択し、Findアクションを実行できます。 このため、ノードをさっと一目見たいときに毎回新しいタブを開く必要はありません。

詳細情報

モデルの読み込み解除

モデルの読み込み解除

すべてのモデルをメモリから明示的に削除することで、メモリ消費量を改善できるようになりました。 メモリインジケーターをクリックするか、Registryアクションによるスケジュールクリーンアップのパラメータ(秒単位で)設定できます。 この機能は現時点では実験的なものですが、今後のリリースでこの機能を改良する予定です。

詳細情報

独立型ジェネレータモジュール

独立型ジェネレータモジュール、1言語当たり複数のジェネレータ

現在は1つの言語に対して複数のジェネレータを作成し、それを(旧バージョンと同様に)言語内でホストするか、通常の最上位モジュールとして言語の隣に追加できます。 ジェネレータの計画を使用すると、複数のジェネレータを最大限に活用できます。 移行を支援するため、言語ジェネレータのうち1つだけが明示的な生成計画なしで引き続きモデルに関与します。 新しいジェネレータは言語コンテキストメニューから作成可能です。また、次のダイアログには当該ジェネレータを独立させるための新しいチェックボックスが実装されています。

コンセプトとインターフェースの変換

コンセプトとインターフェースの変換

コンセプトをインターフェースコンセプトに変換(またはその逆に変換)する新しいインテンションを追加しました。 これは言語構造を作成する際に使用され、使用箇所を変更しません。

使用箇所からの作成

使用箇所からの作成

コード内の使用箇所からコンセプト、メソッド、クラスを作成できるようになりました。 インテンションが式で新しいステートメント、メソッドでクラスを作成できるようになり、子ロール/参照ロールや拡張/実装でコンセプトやインターフェースを作成できるようになりました。

有効なJava識別子の生成

INamedConceptsからの有効なJava識別子の生成

新しいジェネレータステートメントを使用すると、任意のINamedConceptから有効なJava識別子を生成できます。 これは、不正なシンボルを削除し、大文字化し、必要に応じてプレフィックスを追加して一意の名前を生成する機能です。

IntelliJプラットフォームの新しいプラグイン

Find Usages:Finderを書く際に任意の検索結果を報告する新しいステートメント

MPSの旧バージョンでは、Finderでのadd resultステートメントはnode<>ベースの検索結果のみに許されていました。 add raw resultを使用すれば、言語設計者はFind Usages表示が可視化できるあらゆる結果を表示できます。

修正されたバグ

ジェネレータ:動的参照の警告を制御

MPSのジェネレータは動的参照の解決を試みようとして失敗した際に警告を発しますが、すべてのジェネレータがラベルマッピングを使用した厳密な参照構築方法に準拠しているわけではないため、これによって大量の警告が発生してしまいます。 このため、警告の表示を制御するための新しい設定を追加しました。

詳細情報

Client SponsoredJavaStubs の読み込みパフォーマンスを改善 

特に大規模で強力に結びついたjar一式から読み込む場合など、スタブモデルを読み込む際のパフォーマンスを大幅に改善しました。 弊社がターゲットとするプロジェクトでの読み込み時間が2019.2よりも2~3倍高速化しました(18秒から6秒に短縮されました)。 この高速化は、MPS 2019.1とMPS 2019.2にもバックポートされました。

ビルド言語:明示的なモデルルート

MPSは特定のファイル一式(すなわち、*.mps*.mpsr)をモデルとしてのみ扱ってきましたが、カスタムモデルの永続性ではファイル名が異なります。 モジュールをビルドする際に必要なすべてのモデルファイルがバンドルされるよう、ビルドスクリプトのモジュール用に明示的なモデルルートを宣言できるようにし、ファイル名パターンのカスタマイズを容易にしました。

ドキュメンテーション

カスタム永続性のサンプルと新しいビルドソリューションウィザード用のドキュメントが更新されました。 Mathサンプルの生成時間のエラーとドキュメントページのリンク切れが修正されました。 いくつかのダイアログとツールウィンドウも修正されました。

基本言語

2進リテラルと8進リテラルに対応し、Javsdocの型パラメータが適切に処理されるようになりました。 その他多くの問題も修正されています。

モジュール/モデルの識別子オブジェクトを更新するクイックフィックス

MPSは古い名前を検出し、それをSModel言語のオブジェクト用に最新にするクイックフィックスを提供します。

詳細情報

Module Facetストーリーの更新

「Tests」モジュールファセットによって言語設計者は完全に自由になり、MPSはLangaugeモジュールにファセットの存在を要求しなくなりました。

詳細情報

Surround with...(囲む…)

Surround with…(囲む…)アクションを複数ノードを選択したときに使用できるようになりました。 これまでは選択範囲に単体ノードが含まれている場合にしか使えませんでした。

Root HistoryダイアログのShow Affected Filesアクション

ルート履歴のリビジョンの場合、同じリビジョンで変更された他のファイルを表示できるようになりました。

ルート単位永続性のモデルのRoot History

2019.2で導入されたShow Root Historyアクションを単体ファイルに保持されたモデルのルールに使用できるようになりました。 また、ルート単位永続性のモデルにも対応しています。

Favoritesビューの更新

MPSは管理の行き届いたIntelliJプラットフォームのFavoritesツールを統合しています。

詳細情報

メタ言語のスタイリング

すべてのメタ言語が特にキーボードナビゲーション、エディタにおけるプレースホルダーセルの動作に関して同じスタイルと編集操作感、および「New Root」の外観を提供するようになりました。