この章の答え
新しい名前を既存のコマンドへ解決し、処理を重複させない。
原稿の演習は /where を /pwd の別名にする小さな変更です。目的は機能を増やすことより、入力の解釈と実際の処理を分け、既存の抽象化を再利用する練習にあります。
01|図でつかむ
演習の設計図。/where が配布版に標準搭載されているという説明ではない。
02|3つのポイントで理解する
1. どこで文字列を解釈するか
SlashCommand の定義と find_builtin_command 周辺を探します。文字列からコマンド型へ変わる場所が分かれば、別名を受け付ける責務を絞れます。
2. 実行処理を増やさない
/where 専用の cwd 表示を新しく書くと、/pwd と挙動がずれる原因になります。同じコマンド型へ解決し、既存の dispatch に流す設計を考えます。
3. RED と GREEN を確認する
追加前に alias の解決テストが失敗し、追加後に通ることを確かめます。候補表示やヘルプまで変更する必要があるかは、検索・解決・表示の責務を分けて判断します。
03|ソースで確かめる
以下の検索は Codex リポジトリのルートで実行します。最初に対象 commit を記録し、検索結果から定義と呼び出し元を一つずつ開いてください。
git rev-parse --short HEAD
rg -n "Pwd|find_builtin_command" codex-rs
読む入口: codex-rs/tui/src/slash_command.rs 。リンク先は照合に使った固定 commit のファイルです。手元の版と異なる場合は、上の検索語から探し直します。
小さく試す
まず /pwd の解決経路を調べ、別名をどの一箇所に加えるのが自然かを説明します。実装する場合は練習用の作業場所で行います。
04|30秒で復習
- alias は入力の解決に関する変更。
- 既存のコマンド処理を再利用する。
- 追加前の失敗と追加後の成功を確認する。