設定¶
プラグインは JetBrains IDE の設定画面を通じて各種設定オプションを提供します。
プラグイン設定¶
Settings → Languages & Frameworks → ReScript でプラグイン固有の設定にアクセスできます。
Language Server パス¶
rescript-language-server の実行ファイルまたは cli.js エントリーポイントへのカスタムパスを設定します。空欄のままにすると、プラグインが node_modules またはシステムの PATH からサーバーを自動検出します。
カスタムパスが指定された場合、プラグインは設定を適用する前にファイルの存在を検証します。パスが .js ファイルを指している場合は Node.js で起動し、それ以外の場合はバイナリとして直接実行します。
Node.js インタープリターパス¶
Node.js インタープリターへのカスタムパスを設定します。空欄のままにすると、システムの PATH から node を使用します。この設定は、Language Server が .js エントリーポイント(例: node_modules/@rescript/language-server/out/cli.js)経由で起動される場合にのみ適用されます。
ReScript バイナリパス¶
ReScript コンパイラバイナリ(rescript)へのカスタムパスを設定します。空欄のままにすると、プラグインが node_modules/.bin/ またはシステムの PATH からバイナリを自動検出します。
カスタムパスが指定された場合、プラグインは設定を適用する前にファイルの存在を検証します。
Platform パス¶
ReScript プラットフォームディレクトリへのカスタムパスを設定します。空欄のままにすると、プラグインがプラットフォームの場所を自動検出します。
この設定は初期化オプションとして Language Server に送信されます。通常、非標準の ReScript インストール構成を使用している場合にのみ必要です。
Runtime パス¶
ReScript ランタイムディレクトリへのカスタムパスを設定します。空欄のままにすると、プラグインがランタイムの場所を自動検出します。
この設定は初期化オプションとして Language Server に送信されます。Platform パスと同様に、非標準のインストール構成でのみ必要です。
ログレベル¶
LSP サーバーのログ出力の詳細度を制御します。利用可能なレベル:
レベル |
説明 |
|---|---|
|
エラーのみ記録 |
|
エラーと警告を記録 |
|
エラー、警告、情報メッセージを記録(デフォルト) |
|
デバッグレベルのメッセージを含むすべてを記録 |
ログレベルは初期化オプションとして Language Server に送信され、LSP サーバーの再起動後に反映されます。
インクリメンタル型チェック¶
Language Server のクロスファイルインクリメンタル型チェック(実験的機能)を有効または無効にします。有効にすると、Language Server は変更されたファイルのみを再チェックし、大規模プロジェクトでのパフォーマンスが向上します。この設定は初期化オプションとして Language Server に送信され、LSP サーバーの再起動後に反映されます。
デフォルト: 無効
インレイヒントの最大長¶
エディタに表示されるインレイヒントラベルの最大文字数を設定します。推論された型注釈がこの長さを超えると、省略されます。
デフォルト: 25 文字
範囲: 0--200
特殊値: 0 は無制限(省略なし)を意味します
この設定は初期化オプションとして Language Server に送信され、LSP サーバーの再起動後に反映されます。
Reanalyze サーバーモード¶
デッドコード分析を高速化する reanalyze サーバーデーモンを有効または無効にします。有効にすると、プラグインは分析状態をメモリに保持する 常駐 reanalyze プロセスを起動し、以降のデッドコードチェックが大幅に高速化されます。
デフォルト: 有効
必要条件: ReScript 12.1.0 以降
切り替えると、LSP の完全な再起動を必要とせず、サーバーが即座に起動または停止します。
注釈
プラグインの設定を変更すると、LSP サーバーが自動的に再起動されます。サーバーはシャットダウンし、更新された設定で再起動します。
reanalyze パス¶
デッドコード分析用の reanalyze バイナリへのカスタムパスを設定します。デフォルトでは、プラグインは node_modules/.bin/ 内の reanalyze を検索します。
カラースキーム¶
Settings → Editor → Color Scheme → ReScript でシンタックスハイライトの色をカスタマイズできます。
利用可能なカラーキー¶
キー |
説明 |
デフォルトベース |
|---|---|---|
キーワード |
|
Language defaults > Keyword |
文字列 |
文字列リテラルとテンプレート文字列 |
Language defaults > String |
数値 |
整数リテラルと浮動小数点リテラル |
Language defaults > Number |
行コメント |
|
Language defaults > Line comment |
ブロックコメント |
|
Language defaults > Block comment |
演算子 |
|
Language defaults > Operation sign |
波括弧 |
|
Language defaults > Braces |
角括弧 |
|
Language defaults > Brackets |
丸括弧 |
|
Language defaults > Parentheses |
ドット |
|
Language defaults > Dot |
カンマ |
|
Language defaults > Comma |
セミコロン |
|
Language defaults > Semicolon |
型引数 |
|
Language defaults > Metadata |
ポリモーフィックバリアント |
|
Language defaults > Constant |
モジュール名 |
|
Language defaults > Class name |
アノテーション |
|
Language defaults > Metadata |
パターンパイプ |
パターンマッチングの |
Language defaults > Keyword |
ワイルドカード |
パターン内の |
Language defaults > Keyword |
JSX タグ |
JSX 内の HTML 要素名 |
Language defaults > Markup tag |
JSX タグ括弧 |
JSX 内の |
Language defaults > Markup tag |
レクサーベースカラーのカスタマイズ¶
上記の各カラーキーは、JFlex レクサーが認識するトークンの特定カテゴリを制御します。各キーが影響する範囲と効果的なカスタマイズ方法の詳細ガイドを以下に示します。
キーワード¶
Keyword カラーは ReScript のすべての予約語に適用されます: let、type、module、switch、if、else、open、include、external、exception、try、catch、as、rec、and、true、false、async、await など。この色を変更すると、表示されるコードの大部分に影響します。キーワードに太字スタイルを適用すると、コード構造が見やすくなります。
文字列¶
String カラーはダブルクォートで囲まれた文字列リテラル("hello")、文字リテラル('a')、テンプレート文字列のデリミタ(`)に適用されます。テンプレート文字列の式展開マーカー(${ と })も文字列カラーを継承します。テンプレート文字列内の式展開を目立たせたい場合は、やや控えめな文字列カラーを使用すると、式展開される識別子(それぞれのトークンタイプで色付けされる)とのコントラストが生まれます。
演算子¶
Operator カラーは算術演算子(+、-、*、/)、比較演算子(==、!=、<、>)、アロー(=>)、パイプ演算子(|>)、スプレッド(...)、その他の記号トークンに適用されます。ReScript ではパイプチェーン(|> または ->)が非常に一般的なイディオムであるため、演算子カラーは視覚的に大きな影響を与えます。識別しやすい演算子カラーを選ぶと、パイプチェーンが周囲の識別子やキーワードから際立ちます。
Pattern pipe キーは一般的な Operator キーとは別のものです。パターンマッチングのアーム(例: | Some(x) => ...)で使用される | 文字のみを制御します。デフォルトでは switch と視覚的にグループ化するために Keyword カラーを使用しますが、パターンアームを異なる見た目にしたい場合は別の色を割り当てることができます。
モジュール名と名前空間¶
Module name カラーは、レクサーが認識する大文字で始まる識別子に適用されます。例えば Belt、Array、React、Option、ユーザー定義のモジュール名などです。これはレクサーレベルのヒューリスティックであり、大文字で始まるすべての識別子がモジュール名として扱われます。実際のモジュールとバリアントコンストラクタを区別するより正確な色付けには、後述するセマンティックハイライトカラーを使用してください(LSP が接続されている場合、Namespace と Enum member のセマンティックキーがこのレクサーレベルのカラーをオーバーライドします)。
型引数¶
Type argument カラーは 'a、'b、'key のような型変数に適用されます。これらはポリモーフィックな関数シグネチャや型定義に出現します。識別しやすい色を割り当てると、型注釈内のジェネリックパラメータをすばやく見つけられます。
ポリモーフィックバリアント¶
Polymorphic variant カラーは #success、#error、#loading のような # プレフィックス付きタグに適用されます。これらは ReScript で構造的に型付けされており、通常のバリアントコンストラクタとは異なるハイライトにすることで、名義型バリアントと構造型バリアントを区別しやすくなります。
アノテーション(デコレーター)¶
Annotation カラーは @module、@send、@get、@react.component、@genType などの @ プレフィックス付きデコレーターに適用されます。アノテーションは FFI やフレームワークの重要なメタデータを含むことが多いため、視認性がありつつも気が散らない色(控えめなゴールドやグレーなど)が適しています。
JSX カラー¶
JSX tag カラーは JSX 内の小文字の HTML 要素名(例: div、span、input)に適用されます。一方、大文字の JSX コンポーネント名(例: <MyComponent>)は Module name キーで色付けされます。JSX tag bracket カラーは JSX 要素を区切る山括弧 <、>、</、/> に適用されます。JSX タグと括弧にそれぞれ異なる色を割り当てることで、コンポーネントコード内のマークアップとロジックを視覚的に分離できます。
セマンティックハイライトカラー¶
Language Server が接続されている場合、追加のセマンティックトークンカラーが利用可能になります。これらのカラーはレクサーベースのハイライトの上にレイヤーとして重ねられ、型情報に基づいた正確な色付けを提供します。
キー |
説明 |
デフォルトフォールバック |
|---|---|---|
変数 |
変数とパラメータ |
Language defaults > Local variable |
型 |
型名 |
Language defaults > Class name |
名前空間 |
モジュール名(セマンティック解決済み) |
Module name(レクサーキー) |
Enum メンバー |
バリアントコンストラクタ |
Polymorphic variant(レクサーキー) |
プロパティ |
レコードフィールド |
Language defaults > Instance field |
インターフェース |
JSX HTML 要素 |
JSX tag(レクサーキー) |
演算子 |
演算子(セマンティック解決済み) |
Operator(レクサーキー) |
修飾子 |
JSX タグ括弧(セマンティック解決済み) |
JSX tag bracket(レクサーキー) |
セマンティックカラーのカスタマイズ¶
セマンティックカラーは、対象トークンに対してレクサーカラーをオーバーライドし、より正確なハイライトを提供します。各セマンティックキーの制御範囲と、レクサーレイヤーとの相互作用について説明します。
変数¶
Variable キーは、Language Server の型解析によって識別されたすべての変数と関数パラメータに色を付けます。LSP がない場合、ローカル識別子には特定の色が付かず、プレーンテキストとして表示されます。セマンティックハイライトを有効にしてこのキーに色を割り当てると、変数参照がキーワードや型と視覚的に区別できるようになります。控えめな色(デフォルトテキストよりわずかに明るい色)を使用すると、視覚的なノイズを避けられます。
型¶
Type キーは、型名が出現するすべての場所に色を付けます: 型注釈、型定義、型コンストラクタの適用箇所です。レクサーでは型名を通常の識別子と区別できないため、これはレクサーよりも正確な色付けを提供します。例えば、int、string、option はセマンティックハイライトが有効な場合にのみ型として色付けされます。
Namespace と Module Name の比較¶
Namespace セマンティックキーと Module name レクサーキーは、どちらもモジュール名に色を付けますが、精度レベルが異なります。レクサーベースの Module name キーは、Some や None のようなバリアントコンストラクタを含む、すべての大文字で始まる識別子を潜在的なモジュール名として色付けします。セマンティックの Namespace キーは、コンパイラが実際にモジュールとして解決した識別子にのみ色を付けます。LSP が接続されている場合、真のモジュール参照には Namespace カラーが優先され、バリアントコンストラクタには代わりに Enum member カラーが適用されます。これにより、レクサーレベルに存在する曖昧さが解消されます。
Enum メンバー¶
Enum member キーは Some、None、Ok、Error、Red、Green、およびユーザー定義のバリアントなどのバリアントコンストラクタに色を付けます。レクサーレベルでは、これらはモジュール名と区別できません(どちらも大文字で始まるため)。セマンティックレイヤーはコンパイラの型情報を参照することで、この曖昧さを解消します。
プロパティ¶
Property キーは、レコード定義とレコードアクセス式の両方でレコードフィールド名に色を付けます。例えば、user.name ではフィールド name に Property カラーが、user に Variable カラーが適用されます。この区別はセマンティック解析によってのみ可能です。
Interface と Modifier¶
Interface キーは JSX 式内の HTML 要素名(例: div、span)にセマンティック精度で色を付け、Modifier キーは対応する JSX の山括弧に色を付けます。LSP が接続されている場合、これらはレクサーベースの JSX tag カラーと JSX tag bracket カラーをオーバーライドします。
カラースキームファイル¶
プラグインには 2 つの組み込みカラースキームファイルが付属しています:
RescriptDarcula.xml --- Darcula(ダーク)テーマ用に最適化された配色。
RescriptDefault.xml --- Default(ライト)テーマ用に最適化された配色。
これらのファイルは、レクサーベースとセマンティックトークンキーの両方の初期カラーを定義します。Color Scheme 設定で行ったカスタマイズはこれらのデフォルトをオーバーライドし、IDE プロファイルに保存されます。
コードスタイル¶
Settings → Editor → Code Style → ReScript でインデントを設定できます。
オプション¶
設定 |
デフォルト |
説明 |
|---|---|---|
タブサイズ |
2 |
タブ文字のスペース換算幅。 |
インデント |
2 |
各インデントレベルに使用するスペース数(またはタブ幅)。 |
継続インデント |
2 |
継続行に適用されるインデント(例: 長い式が次の行に折り返す場合)。 |
タブ文字を使用 |
いいえ(スペース) |
インデントに実際のタブ文字を挿入するか、スペースを挿入するか。 |
各設定の影響範囲¶
タブサイズ¶
Tab size はエディタ内でタブ文字がどの程度の幅で表示されるかを制御します。ReScript の規約では 2 スペースインデントを使用するため、デフォルトのタブサイズは 2 です。この設定は、すでにタブ文字を含むファイルがある場合にのみ影響し、タブ文字の視覚的な表示幅を決定します。
インデント¶
Indent 設定は、Tab キーを押したとき、またはブロック内で新しい行を自動インデントするときに挿入されるスペース数を制御します。これはコードの視覚的な構造を決定する主要な設定です。ReScript プロジェクトでは慣例的に rescript format の出力に合わせて 2 スペースインデントを使用します。
Tip
rescript format は 2 スペースインデントを強制するため、この設定を別の値に変更すると、フォーマット前後でコードの見た目が変わります。一貫性を保つため、2 のままにしてください。
継続インデント¶
Continuation indent は、文や式が複数行にまたがる場合に適用される追加のインデントを制御します。例えば、関数呼び出しの引数が次の行に折り返される場合、呼び出しの開始位置を基準にこの量だけインデントされます。デフォルトの 2 スペースは、ReScript の規約に沿った折り返し行の配置を維持します。
タブ文字の使用¶
Use tab character を有効にすると、エディタはスペースの代わりに実際のタブ文字(\t)を挿入します。ほとんどの ReScript プロジェクトはスペースを使用し、rescript format もスペースを出力するため、デフォルトでは無効になっています。タブ文字が特に必要な場合にのみ有効にしてください。
インレイヒント¶
Settings → Editor → Inlay Hints → ReScript でインレイヒントの表示/非表示を切り替えられます。
インレイヒントの表示内容¶
インレイヒントは、コンパイラが推論した型情報を表示する、エディタ内の小さなインライン注釈です。型が明示的に記述されていない let バインディングや関数パラメータの横に表示されます。
例えば、以下のコードがある場合:
let add = (a, b) => a + b
インレイヒントは推論された型をエディタ内に直接表示します:
let add = (a: int, b: int): int => a + b
設定オプション¶
IntelliJ Platform はインレイヒントに対していくつかの制御を提供します:
有効/無効: ReScript のすべてのインレイヒントのオン/オフを切り替えます。無効にすると、型注釈は表示されません。
パラメータに表示: 関数シグネチャにパラメータの型ヒントを表示するかどうかを制御します。
型に表示:
letバインディングに戻り値の型ヒントを表示するかどうかを制御します。
注釈
インレイヒントの表示には Language Server への接続が必要です。LSP が切断されている場合、設定に関係なくヒントは表示されません。
インレイヒントを無効にする場合¶
インレイヒントは、不慣れなコードを調査する場合や型推論の問題をデバッグする場合に便利です。ただし、型を十分に把握しているファイルや、ヒントが視覚的なノイズになりすぎるファイルでは、無効にしたい場合があります。エディタ内のインレイヒントを右クリックしたコンテキストメニューから、Settings ダイアログを開かずにカテゴリ別にヒントをすばやく切り替えられます。
ライブテンプレート¶
Settings → Editor → Live Templates → ReScript でライブテンプレートの表示、編集、カスタムテンプレートの追加ができます。
プラグインには一般的な ReScript パターン(宣言、制御フロー、FFI バインディング、React コンポーネント)をカバーする 21 個のビルトイン Live Templates が含まれています。展開テキストのカスタマイズ、新しいテンプレートの追加、省略キーの変更が可能です。