SublimeREPLはSublime Textにインタプリタを設定するプラグインです。GHCiをエディタ上に呼び出し、編集中のモジュールを手軽にデバッグ/テストできるようにします。このプラグインは現時点でstackをサポートしていませんが、非公式にとりあえず設定できたので紹介します。
デフォルトではGHCiはghci
コマンドで呼ばれるよう設定されています(Packages\SublimeREPL\config\Haskell\Main.sublime-menu
)。
"command": "repl_open",
"caption": "Haskell",
"id": "repl_haskell",
"mnemonic": "h",
"args":
{
"type": "sublime_haskell",
"encoding": "utf8",
"cmd": ["ghci"], ← ここやで
"cwd": "$file_path",
"external_id": "haskell",
"syntax": "Packages/Haskell/Haskell.tmLanguage"
}
stackパッケージ内で全てのモジュール/依存パッケージをロードしつつGHCiを呼び出すには、このコマンドをstack ghci
に変更します。パッケージされていないモジュールの場合はstack exec ghci
に変更します。手動で変更するのは面倒なので、Haskellの項目を分割し、エディタ上で選択できるようにしました。
[
{
"id": "tools",
"children":
[{
"caption": "SublimeREPL",
"mnemonic": "r",
"id": "SublimeREPL",
"children":
[{
"caption": "Haskell",
"id": "Haskell",
"children":
[
{
"command": "repl_open",
"caption": "Haskell",
"id": "repl_haskell",
"mnemonic": "h",
"args":
{
"type": "sublime_haskell",
"encoding": "utf8",
"cmd": ["stack", "exec", "ghci"],
"cwd": "$file_path",
"external_id": "haskell",
"syntax": "Packages/Haskell/Haskell.tmLanguage"
}
},
{
"command": "repl_open",
"caption": "Haskell - project",
"id": "repl_haskell",
"mnemonic": "h",
"args":
{
"type": "sublime_haskell",
"encoding": "utf8",
"cmd": ["stack", "ghci"],
"cwd": "$file_path",
"external_id": "haskell",
"syntax": "Packages/Haskell/Haskell.tmLanguage"
}
}
]
}]
}]
}
]
設定ファイルをこの内容で上書きすれば、メニューでhaskell
とhaskell - project
が選べるようになります。前者ではstack exec ghci
が、後者ではstack ghci
が呼ばれます。
ちなみにFluentREPLというプラグインは、選択中のモジュールが保存されるたびにインタプリタにそれをロードし直させる機能をSublimeREPLに追加します。非常に便利です。