MPS 2021.1の新機能

MPS 2021.1 には、Java アノテーションのサポート、多数の VCS の改善、Apple Silicon など、その他多数の機能が導入されました。

エディタ

拡大縮小

開いているエディターウィンドウで Control キーを押しながらマウスホイールを回転させると、フォントサイズを迅速に調整できます。 フォントサイズの変更は持続されないため、ファイルを開き直すとテキストサイズはデフォルトの値にリセットされます。 この機能は、Preferences | Editor | General セクションの「Change font size with Ctrl/Cmd+Mouse Wheel」で有効または無効にできます。

インデントレイアウトのパフォーマンスの改善

インデントレイアウトの実装は一部の主要ケースで徐々に行われてきましたが、インデントレイアウトを主に使用する言語(BaseLanguage など)で記述された大型のモデルのレンダリング時間が短縮されます。 この機能は、VM オプションの mps.indent_layout.disable_incremental で無効にできます。

フォントの太さを調整

フォントの太さを調整

長時間でも難なく見ることのできるエディターフォントを選択することは重要です。 最近追加されたタイポグラフィ設定では、この選択が若干楽になり、個人に合わせて細かく調整できるようになりました。 バージョン 2021.1 では、主なフォントスタイルと太字のフォントスタイルの太さを Preferences | Editor | Fonts で微調整できます。

バージョン管理システム

ルートのアノテーション機能の改善

ルートのアノテーション機能の改善

バージョン管理システムのサポートにより、ルートのアノテーション機能への改善が追加されます。 移動追跡でリビジョンの変更を計算する新しいアルゴリズムは、ルートのアノテーション機能に使用されるようになりました。 アノテーション付きの行/セルの色は、ルートが変更されたリビジョンのみを使用して決定されます。 アノテーション列が開かれると、アノテーション付きのセルには特別なコンテキストメニューグループが表示されるようになったため、 アノテーション付きのセルに Copy Revision NumberShow Diff などのさまざまなアクションを適用することができます。

マージコミットの Diff ダイアログ

マージコミットの Diff ダイアログ

Git ログでマージされたコミットには、Diff ダイアログが有効になります。 ビューアには 3 つのパネルが表示され、マージされたモデルは中央のパネルに、マージされた 2 つのブランチのモデルは左右のパネルに表示されます。

Diff エディターの同期スクロール機能

Diff エディターの同期スクロール機能

Diff ダイアログでは、ボタンを押して、エディターのスクロール同期をオフにできるようになりました。

ルートアノテーションとルート/ノード履歴に使用されるリビジョングラフ

ルートアノテーションとルート/ノード履歴アルゴリズムはこれまで、ファイルリビジョンの番号付きリストに基づいて、2 つの隣接するリビジョン間のルートの変更を計算していました。 ただし、これらのリビジョンが 2 つの異なるブランチに属するものであることがあったため、取得された変更が合理的でないことがありました。 マージリビジョンの処理も適切でなかったため、 より古いリビジョンの変更がより新しいマージリビジョンの変更として誤って表示されることがありました。 新しいバージョンでは、リビジョングラフを考慮して変更履歴を作成するように、アルゴリズムが改善されています。

シェルフに保存

新しい Save to Shelf アクションを使用すると、変更をローカル環境に留めたまま、変更を Shelf(シェルフ)にコピーできます。 macOS では ⇧⌘A(Windows または Linux では Ctrl+Shift+A)を押してから ‘Save to Shelf’ と入力すると、このアクションにアクセスできます。

ジェネレータ

$LOOP$ マクロ変数へのアクセスの改善

$LOOP$ マクロ変数へのアクセスの改善

LOOP.inputNode 式を使用して LOOP マクロの入力ノードを参照できるようになったため、VAR マクロを使用する必要がなくなりました。 LOOP.index を使用して、以前のユーザー定義コンテキスト変数を置き換えることで、LOOP のインデックスにもアクセスできるようになりました。

GenPlan 宣言における Transform ステートメントの更新

Generation Plan の拡張性を改善するために、プランデザイナーが認識しない言語またはジェネレーターを含める新しい仕組みが追加されました。 新しいバージョンでは、transform ステートメントを使用して、特定の言語をターゲットまたは拡張する言語を含めることができます。 言語 B が言語 A を「ターゲットする」といった場合、言語 B のジェネレーターが言語 A のコンストラクトを作成することになります。

コンパイルされたテンプレートの強化

MPS 2021.1 では、オプションがアクティブである場合に、コンパイルされたテンプレートによって子ノードが親ノードに適切に配置されているかどうかがチェックされるようになりました。

詳細情報

その他

Java ファセット使った MPS モジュールの Java コンパイラー

MPS モジュールの Java コンパイルに対するアプローチが大きく変更されました。 これにより、最も投票数の多い課題の 1 つであるアノテーション処理のサポートが解決されました。 MPS Java Compiler インフラストラクチャを API の javax.tools.JavaCompiler セットを使用するように切り替えたため、MPS で、この標準 API を実装するすべてのコンパイラーを使用できるようになっています。 バージョン 2021.1 の時点では、MPS はこの API 向けに構成されたデフォルトのコンパイラーを使って、Eclipse Complier for Java(ECJ)を使用するオプションで実行します。

詳細情報

プロジェクト移行に使用されるベースライン MPS バージョン

新しいプロジェクトが作成されると、「ベースライン」の MPS バージョンが保存されるようになりました。 プロジェクトのベースラインバージョンより前の MPS バージョンからプロジェクトを移行する場合には適用されません。 これにより、プロジェクト移行に特定の任意の「ベースライン」バージョンを柔軟に指定できるようになりした。このバージョンは、新しい ‘getBaselineVersion():int method’ を使用して、プロジェクト移行インターフェースで変更できます。

詳細情報

「メソッドのシグネチャー」リファクタリングの改善

「メソッドのシグネチャー」リファクタリングの改善

Method Signature リファクタリングダイアログに、新しい引数または型が変更された引数のデフォルトの値を指定する方法が含まれました。 パラメーターが削除されたにもかかわらず、引き続きメソッドで使用されている場合、新しいローカル変数が代入されるため参照が失われることがありません。 メソッドの呼び出しがそのシグネチャーに一致しない場合は、インテンションアクションによって、メソッドのシグネチャーを変更して呼び出しと一致させることができます。

詳細情報

BaseLanguage コメントの新しいオプション

lang.text 言語に新しい機能がいくつか追加されたことで、BaseLanguage の単一行および複数行のコメント機能が強化されています。

  • テキスト選択では、前方または後方に選択して、行の一部分のみをハイライトできるようになりました。
  • 太字イタリック体下線などのアクションを選択箇所に使用できます。
  • プレーンテキストを使ったコピー/貼り付けが実装されました。
  • 箇条書きおよび番号付きリストがサポートされました。

lang.smodel の式の改善

model.roots()model.rootsIncludingImported()、および model.nodesIncludingImported() で、概念を指定するための #expression が、model.nodes() と同様にサポートされました。

プラグインで配布されたモジュールの可視性の制御

プラグインは com.intellij.mps.LanguageLibrary 拡張機能ポイントを使って、貢献しているモジュールに関する情報を MPS に伝えます。 拡張機能ポイントではオプションの hide="true" 属性を提供する場合があります。この属性により、プラグインのモジュールは com.intellij.mps.VisibleModuleMask で指定されたパターンでフィルターできるようになります。

詳細情報

その他の改善

組み込みの HTML プレビュー

組み込みの HTML プレビュー

新しい組み込みのブラウザープレビューを使用すると、HTML ファイルをすばやくプレビューできます。 プレビューを開くには、エディターの右上にあるウィジェットの MPS ロゴアイコンをクリックしてください。 HTML やリンク先の CSS / JavaScript ファイルを変更すると、プレビューがその場で更新されます。

Apple Silicon のサポート

M1 チップを使用する Mac で MPS を使用できるようになりました。 Apple Silicon 向けの JetBrains MPS のインストーラーをウェブサイトから直接ダウンロードするか、JetBrains Toolbox App から入手してください。

自動インポートの設定

MPS 2021.1 では、新しいバージョンの MPS をインストールするたびに表示される Import Settings ダイアログが、適切な設定と構成がない場合にのみ表示されるようになります。

アクセシビリティの改善

このリリースでは、ウェルカム画面、Project Structure ビュー、VCS ログの UI 要素に付けるラベルの数を増やしました。 これらの要素やガターアイコンが、スクリーンリーダーが有効な場合に正しく読み上げられるようになりました。 また、macOS ユーザー向けのアクセシビリティ対応の改善にも取り組んでいます。