エディタ
VS Code の拡張が付属しています。色付け、言語サーバ、デバッガです。言語サーバもデバッガも lp9 そのもの(lp9 lsp、lp9 dap)で、別のプログラムではありません。
打ちながら誤りを示す
言語サーバは、キーを打つたびにコンパイラの前段を全部走らせます。ファイルを読み、imports: をたどり、各モジュールが公開しているものを確かめ、型を推論します。lp9 run と同じコードを通るので、エディタが受け入れて lp9 run が断る、ということは起きません。
LP-9 は最初の誤りで止まるので、一度に示す誤りは一つです。
推論した型を見せる
型を書かない言語なので、ホバーが型を見せます。
- 変数、引数、フィールド、
selfには、その場所で付いた型 - 送信には、それが返すもの
- メソッドには、引数ごとの型と答え(
Fib class >> of: Int -> Int) - クラスには、フィールドの型
型の下には、その型がどこで、なぜ決まったかが出ます。
settled at 20:6 by x:y:
思っていたのと違う型が付いたとき、どこを見ればいいかが分かります。
定義、参照、名前の変更、補完
定義へ移動、参照の検索、名前の変更、補完ができます。クラスを変更すると、ハンドラの名前(Counter >> Bump)、on: #click send: Bump、receive: の表、フィールドに書いた型のように、クラスの名前を書いた所が全部変わります。
デバッガ
ブレークポイント、ステップイン、ステップオーバー、ステップアウト、呼び出しの積み重ね、各段の変数(引数、受け手のフィールド、self)。.lp9 を開いて F5 で始まります。プログラムの出力はデバッグコンソールに出ます。
できないこと:
- デバッガは解釈器の上で動きます。
lp9 buildした実行ファイルは止まりません。 - 式を評価しないので、ウォッチ式も条件付きブレークポイントもありません。
- アクタのターンは一つの積み重ねとして見えます。
実行とビルド
「LP-9: Run Current File」と「LP-9: Build Current File」は、ファイルを保存してターミナルに送ります。プログラムはウィンドウを開いてキーボードを読むので、出力パネルでは足りないからです。
設定
lp9.path | lp9 の場所。空なら拡張に入っているもの、ワークスペースのビルド出力、PATH の順に探す |
lp9.importPath | imports: を探すディレクトリ。言語サーバ、デバッガ、Run に同じものを渡すので、エディタが見つけるものと実行が見つけるものは同じ |