MPS 2021.2 の新機能

MPS 2021.2 はスペルチェックのメカニズムや自動補完ポップアップ、強化された VCS などを提供します。

自動補完ポップアップ

通常は Ctrl/Cmd + Space を押したときに起動するコード補完ですが、今回入力をストップしてからデフォルトで 0.5 秒後に自動的に表示されるようになりました。 引き続き、必要に応じて手動で開くこともできます。 詳細.

VCS diff 内における変更内容のラッピング・アンラッピング機能の改善

VCS diff 内における変更内容のラッピング・アンラッピング機能の改善

変更内容のラッピングをとても柔軟に行えるようになりました。 ラッピングの中での独立した変更やラッピングを外すという変更を行えるようになりました。 また、ラッピングの中での変更とラッピングを外すという変更を隣同士に複数行うこともできます。 ID が変更されたノードの中では内部の移動が検出されるようになりました。

見やすくなったノード属性の変更内容

見やすくなったノード属性の変更内容

これまで、属性のエディターセルは Diff ダイアログの中で正しくハイライトされていませんでした。 通常、属性が追加されたり、削除されたりした場合は、問題の属性だけでなく、ノード全体が対象の属性と一緒にハイライトされていました。

汎用的なスペルチェックメカニズム

汎用的なスペルチェックメカニズム

IntelliJ IDEA のスペルチェックメカニズムを使ってコメントや文字列リテラルの入力ミスや間違いをチェックする MPS 機能がラベルセルに表示されるテキストに対しても機能するように拡張されました。 セル内のテキストをディクショナリーに対して (環境設定の設定に従って) チェックする必要があることを示すには、エディター宣言でセルに spellcheck スタイルを追加するだけで行えます。

Rich Client Platforms (RCP) の場合は、ディストリビューションに必ず jetbrains.mps.editor.spellcheck プラグインを含めてください。

移行されたプロジェクトのバージョン

移行されたプロジェクトのバージョン

新しい MPS バージョンに移行されたプロジェクトが開発者によって古い MPS バージョンを使ってアクセスされるというシナリオについて措置を施しました。 Migration サブシステムは、移行が適用される際に MPS プラットフォームのバージョンを追跡するようになり、開こうとするプロジェクトが新しいバージョンに移行されている場合は警告が出るようにもなりました。 不意にモデルを破損してしまうのを防ぐのに便利な機能です。

最適化された参照スコープ

1 つのモデルを読み取る際に評価されたスコープを共有するメカニズムが存在します。 j.m.lang.constraints にスコープを共有するための新しい式が導入されました (for model [ factory, key]visible roots [concept]、および new ModelPlusImportedScope(model, rootsOnly, concept) の代わりに visible nodes [concept])。 新しい式は、キャッシュメモリにモデルのスコープを保存するために使用されます。つまり、記録して計算するのは 1 回しか必要ないということです。

ノードの変更を無制限で行えます

拡張機能の作成者は、MPS モデルで機能するコードを書く際に、付与するアクセスの種類を選択しなくてはいけません。 SNode を操作する場合は (setProperty()、addChild() など)、UI インタラクションを伴わない場合でも、コマンドアクセスしか付与できませんでした。 今回、この制限が取り除かれ、モデルの書き込みアクセスを持つコードはノードを変更できるようになりました。

ツールチップ「レーダー」

ツールチップ「レーダー」

ツールチップ機能に「レーダー」と呼ばれる機能が追加され、ツールチップのあるセルが示されるようになりました。 ツールチップの「レーダー」は Ctrl キーを長押しすれば有効になります。

ダイアモンド演算子

BaseLanguage でコンストラクターに対して Java のダイアモンド演算子を使うことにより、コンテキストからジェネリックパラメーターを推論できるようになりました。 ダイアモンド演算子は、新しく書かれたコードに対しデフォルトで有効化されます。 既存のコンストラクターに対して有効化するには、既存の型パラメーターを除去し、インスペクターで infer type parameterstrue に設定するか、<> をもう一度入力してから空のパラメーターを除去します。

BaseLanguage プロパティの改善

baseLanguage のプロパティが型チェックで正しく考慮されるようになりました。 プロパティがインターフェイスまたは abstract メソッドを継承するとき、メソッドが実装されていないというエラーは出なくなります。 ジェネリック型のプロパティを定義するとき、インスタンスのプロパティは正しい型を使ってアクセスされます。

T 型のプロパティに対して公開されている setter は、void ではなく、T 型のオブジェクトを返します。

Show Diff の統一化

Show Diff の統一化

MPS ではエディタータブに最初のファイルと変更後のファイルの違いが表示されるようになりました。 差分の表示アクションをどのように呼び出すかを問わず、IDE はデフォルトでエディターに diff を開きます。

変更は別のウィンドウで追跡した方が便利だと感じる場合は、任意のファイルをエディターからドラッグできます。 そうした場合は、その操作が IDE に記録されるため、それ以降の diff は別のウィンドウに開かれるようになります。

その他の改善

Preferences/Settings の新しい遷移オプション

Preferences/Settings の新しい遷移オプション

セクション間を簡単に移動できるよう、Preferences/Settings のウィンドウの右上隅に新しく矢印が配置されました。 これらを使ってセクション間を行き来することができます。

ツールウィンドウのドラッグ & ドロップ

ツールウィンドウをドラッグ & ドロップして IDE のメインウィンドウ内で移動したり、別のウィンドウとして表示させたりするのが簡単になりました。 ツールウィンドウをドラッグするには、そのネームバーをクリックして掴み、ハイライトされた場所にドロップします。

組み込みの HTML プレビュー

ターミナルの強化

ビルトインターミナルにカーソルの形に関するオプションが新しく追加されました。 また、ターミナルにはオプション (⌥) をメタキーとして使用するショートカットに対するサポートも新しく導入されています。 例えば、次のショートカットを使用できます。

  • ⌥+F – 次の単語に移動
  • ⌥+B – 前の単語に移動
  • ⌥+D – 次の単語を削除