ナビゲーション¶
このプラグインは、コードベース内を効率的に移動するためのいくつかのナビゲーション機能を提供します。
定義へ移動¶
LSP Required
Ctrl(macOS では Cmd)を押しながらシンボルをクリックするか、Ctrl+B を押して定義元にジャンプします。
対応するもの:
変数と関数
型
モジュール
External バインディング
ファイルを手動で検索してコードをスクロールする代わりに、任意のシンボルの定義元に一瞬でジャンプでき、コードリーディングと探索の効率が大幅に向上します。
参照の検索¶
LSP Required
シンボルを右クリックして Find Usages を選択するか(または Alt+F7 を押す)、そのシンボルが使用されているすべての箇所を表示します。
関数や型を変更する前に、参照されているすべての箇所を即座に確認でき、リファクタリングの影響範囲を簡単に評価できます。
シンボルへ移動¶
Native
Ctrl+Alt+O(macOS では Cmd+Option+O)を押すと、プロジェクト全体でシンボルを名前で検索できます。
シンボル検索は PSI Stub Index を使用しており、プロジェクト読み込み時に宣言名を事前インデックスすることで、全ファイルをスキャンする代わりに高速な O(log n) の検索を実現しています。
シンボルの名前は知っているがどのファイルにあるか分からない場合、プロジェクトツリーを手動で辿ったりコードベース全体をテキスト検索したりする手間を省けます。
ストラクチャービュー¶
Native
Alt+7(macOS では Cmd+7)を押すと Structure パネルが開き、現在のファイルのアウトラインが表示されます:
モジュール宣言
関数バインディング(
let)型定義
External 宣言
例外宣言
ファイルの構造を一目で俯瞰でき、何百行もスクロールすることなく目的の宣言をすばやく見つけられます。
参考
Code Editing では、ストラクチャービューに表示される宣言を折りたたむコード折りたたみ機能を提供しています。
ファイル切り替え(.res ↔ .resi)¶
Native
Alt+O を押すと、ReScript ソースファイル(.res)とそのインターフェースファイル(.resi)を切り替えられます。
モジュールインターフェースを扱う際、実装と公開 API の間を頻繁に行き来する必要があります。このワンキーショートカットにより、プロジェクトツリーで対応ファイルを探す手間がなくなります。
実装へ移動¶
Native
Ctrl+Alt+B(macOS では Cmd+Alt+B)を押すと、.resi ファイルのインターフェース宣言から、対応する .res ファイルの実装にジャンプします。
Goto Super(後述)の逆方向の操作です。Goto Super が実装からインターフェースへ移動するのに対し、Go to Implementation はインターフェースから実装へ移動します。
例:
// In Foo.resi, caret on:
let greet: string => string
// Press Ctrl+Alt+B → jumps to:
// let greet = (name) => `Hello, ${name}!` (in Foo.res)
プラグインは宣言を名前と種別(let、type、module、external、exception)で照合します。ネストされたモジュール宣言も1階層まで対応しています。
.resi インターフェースをレビュー中に関数の実際の実装を確認したい場合、ファイルを開いて手動で検索する代わりに、実装本体に直接ジャンプできます。
どこでも検索¶
Native
Shift を2回押す(ダブルタップ)と Search Everywhere ダイアログが開き、以下を横断的に検索できます:
Files —
.resおよび.resiファイルを名前で検索Symbols — 関数、型、モジュール、その他の宣言を検索(スタブインデックスによる高速検索)
Actions — IDE アクションやプラグインコマンドを検索
検索ダイアログでは、ReScript のファイルやシンボルが他の言語の結果と一緒に表示されます。上部のタブバーでカテゴリを絞り込めます。
プロジェクト内で何かを見つける最も速い方法です。どのメニューやショートカットを使うか覚える必要はなく、Shift のダブルタップだけでファイル、シンボル、アクションを一度に検索できます。
関連ファイルへ移動¶
Native
Navigate → Related Symbol を使用して関連ファイル間を移動します:
.res→.resi(インターフェース).res→.js(コンパイル出力).resi→.res(実装)
モジュールに関連するすべてのファイル(インターフェース、実装、コンパイル出力)を統一的に表示し、同じコードの異なる表現をすばやく切り替えられます。
ファイルインクルードナビゲーション¶
Native
プラグインは open 文を対応するモジュールファイルに解決し、open 宣言から参照先ファイルへのナビゲーションを可能にします。
例:
open Belt.Array // Ctrl+click to navigate to Belt_Array.res
open MyModule // Ctrl+click to navigate to MyModule.res
モジュール名は . を _ に置換してファイル名に変換されます(例: Belt.Array → Belt_Array.res)。
open 文がどのファイルを指しているか推測する代わりに、直接 Ctrl+クリック でモジュールのソースに移動でき、依存関係の追跡が容易になります。
インターフェースファイルの作成¶
LSP Required
.res ファイルを開いた状態で、Navigate → Create Interface File を使用すると、Language Server から .resi インターフェースファイルを自動生成できます。
.resi ファイルを手書きするには、すべての公開宣言をコピーして本体を削除する必要があります。このコマンドは正確なインターフェースを自動生成し、大幅な時間の節約とコピー&ペーストのミス防止を実現します。
コンパイル済み JavaScript を開く¶
LSP Required
Alt+Shift+J を押すと、現在の .res ファイルのコンパイル済み JavaScript 出力を開きます。プラグインは Language Server にコンパイル済みファイルのパスを問い合わせ、エディタで開きます。
ランタイムの挙動をデバッグしたり、ReScript が実際に生成するコードを確認したい場合、ビルドディレクトリを手動で辿ることなく、コンパイル出力を即座に表示できます。
完全修飾名のコピー¶
Native
Cmd+Shift+Alt+C を押すと、カーソル位置のシンボルの完全修飾名(例: Module.SubModule.functionName)をコピーします。
ドキュメント、イシュートラッカー、コードレビューでシンボルを参照する際に便利です。モジュール階層から手動で組み立てる必要なく、正確な修飾パスが得られます。
Goto Super(.res ↔ .resi)¶
Native
Ctrl+U(macOS では Cmd+U)を押すと、.res ファイルの宣言から対応する .resi インターフェースファイルの宣言へジャンプできます。逆方向も同様です。
プラグインは宣言を名前と種別(let、type、module、external、exception)で照合します。ネストされたモジュール宣言も1階層まで対応しています。一致する宣言が見つからない場合は、対応ファイルの先頭が開かれます。
例:
// In Foo.res, caret on:
let greet = (name) => `Hello, ${name}!`
// Press Ctrl+U → jumps to:
// let greet: string => string (in Foo.resi)
関数を編集中に、インターフェースファイルの公開 API シグネチャを即座に確認でき、実装が公開されたコントラクトと一致しているか検証するのに役立ちます。
テストへ移動¶
Native
Ctrl+Shift+T(macOS では Cmd+Shift+T)を押すと、実装ファイルとそのテストファイル間を移動できます。
命名規則¶
プラグインは以下の命名規則でテストファイルを検索します:
実装ファイル |
テストファイル |
|---|---|
|
|
|
|
|
|
テストファイルの作成¶
テストファイルが存在しない場合、プラグインはフレームワーク固有のボイラープレートを含むテストファイルの作成を提案します:
Vitest ---
open Vitestとdescribe/test/expectJest ---
open Jestとdescribe/test/expectフレームワークなし --- シンプルな
Js.logボイラープレート
テストフレームワークは package.json の依存関係から自動検出されます。
実装とテストの切り替えの手間を解消します。ショートカット1つでテストファイルにジャンプでき、まだ存在しない場合はテストフレームワークに合った適切なボイラープレート付きでプラグインが作成します。
コンテキスト情報¶
Native
長い宣言の本体内をスクロールすると、IDE がエディタの上部に宣言ヘッダーを固定行として表示するため、現在どの関数やモジュール内にいるかを常に把握できます。
トリガー: Alt+Q(macOS では Ctrl+Shift+Q)または View > Context Info。長い宣言内をスクロールすると自動的に表示されます。
// When scrolled deep inside a function body:
// ┌──────────────────────────────────────┐
// │ let processData = (input) => │ ← sticky header
// │ ... │
// │ // you are scrolled here │
// └──────────────────────────────────────┘
トップレベル宣言に対応: let、type、module、external、open、include、exception。
長い関数本体を持つ大きなファイルでは、どの宣言を編集しているか見失いがちです。固定ヘッダーにより、上にスクロールして確認する必要なく、常に現在位置を把握できます。
外部ドキュメント¶
Native
Shift+F1 を押すと、カーソル位置の標準ライブラリモジュールの rescript-lang.org API ドキュメントページを開きます。
対応モジュールは、すべての Belt.* サブモジュール(Belt.Array、Belt.Map、Belt.Option 等)およびすべての Js.* サブモジュール(Js.Promise、Js.String、Js.Array 等)です。
例:
// Caret on "Belt.Array", press Shift+F1
// Opens: https://rescript-lang.org/docs/manual/latest/api/belt/array
注釈
外部ドキュメント URL は Belt.* および Js.* 標準ライブラリモジュールでのみ利用可能です。その他のモジュールでは Shift+F1 は動作しません。
ホバーツールチップでは足りない詳細な API ドキュメントが必要な場合、ウェブサイトを自分で検索する必要なく、公式ドキュメントページに直接アクセスできます。
パンくずナビゲーション¶
Native
エディタの上部にパンくずが表示され、現在のスコープパス(ファイル → モジュール → 関数)を示します。任意のセグメントをクリックすると、そのスコープに移動できます。
深くネストされたモジュール内で作業する際、パンくずが階層内の正確な位置を示し、ワンクリックで任意の親スコープにジャンプできます。
コール階層¶
Native
Ctrl+Alt+H(macOS では Cmd+Alt+H)を押すと、カーソル位置の関数の Call Hierarchy ウィンドウが開きます。
Call Hierarchy ビューは2つの視点を提供します:
Callers — 選択した関数を呼び出している関数(誰が私を呼ぶ?)
Callees — 選択した関数の本体内で呼び出されている関数(私は誰を呼ぶ?)
Call Hierarchy ツールウィンドウのツールバーボタンで Callers ビューと Callees ビューを切り替えられます。ツリーを展開して、より深い呼び出しチェーンを探索できます。
例:
let helper = (x) => x + 1
let process = (data) => {
let result = helper(data)
result
}
// Place caret on `helper`, press Ctrl+Alt+H:
// Callers view shows: process → helper
// Place caret on `process`, press Ctrl+Alt+H:
// Callees view shows: process → helper
注釈
Call Hierarchy は PSI ベースのテキスト検索で呼び出し関係を検出します。プロジェクトスコープ内で動作し、識別子を名前で照合します。最良の結果を得るには、let および external 宣言で使用してください。
関数の呼び出しチェーン(誰が呼び出し、何を呼び出すか)を理解することは、リファクタリングやデバッグ時に不可欠です。このビューにより、コードを手動でトレースすることなく完全なコールグラフを把握できます。
型シグネチャ検索¶
LSP Required
Search Everywhere ダイアログで型シグネチャによる関数検索ができます。詳細は高度な機能 — 型シグネチャ検索を参照してください。
必要な関数の型(例: string => int)は分かっているが名前が分からない場合、型の形で検索して適切な関数を発見できます。型推論を特徴とする ReScript のような言語に自然にフィットする機能です。
使用タイプの分類¶
Native
プラグインは Find Usages の結果で ReScript シンボルの使用方法を分類し、使用コンテキストごとにグループ化します:
Read access — 変数やフィールド値の読み取り
Write access — ミュータブル参照への代入
Import / Open —
open文での参照Type reference — 型注釈としての使用
シンボルへの参照をレビューする際に、使用パターンをすばやくフィルタリングして理解するのに役立ちます。この分類がないと、すべての使用箇所がフラットなリストで表示され、読み取り、書き込み、インポート、型参照を区別しにくくなります。
ナビゲーションバー¶
Native
エディタ上部のナビゲーションバーは、現在のカーソル位置の構造認識型階層を表示します。既存の Structure View モデルを活用して、トップレベル宣言(let、type、module、external、exception)をアイコン付きで表示し、正確なナビゲーションを提供します。
Structure View パネルのコンパクトで常時表示される代替手段として機能し、別のツールウィンドウを開くことなくファイルの宣言階層を確認・ナビゲートできます。