PJR-XBDB devcontainer scaffold の Emacs の設定が ~/.emacs.d があると読まれない
1. 課題内容
devcontainer scaffold --editor emacs の post-create は、init.el がどこにもないときテンプレートを ~/.config/emacs/init.el に置く。Emacs は ~/.emacs.d があると init.el がなくても ~/.config/emacs を読まないため、Emacs を起動したことがある環境やホームを引き継ぐ構成ではテンプレートが黙って無視される(2026-10-09 に実機で確認)。
2. 影響範囲
| 観点 | 影響 |
|---|---|
| スコープ | src/devcontainer-scaffold.ts が生成する post-create の Emacs の設定の配置、その unit test と案内文書 |
| スケジュール | devcontainer scaffold は v0.3.0 で試験的な機能。公開前に直すのが望ましい |
| コスト | 利用者が設定の効かない理由を調べる手間 |
| 品質 | テンプレートが黙って無視され、C-h などの既定が効かない |
| 関係者 | --editor emacs を使う利用者 |
3. 対応方針
| 項目 | 内容 |
|---|---|
| 原因 | Emacs は ~/.emacs / ~/.emacs.el / ~/.emacs.d のいずれかがあると ~/.config/emacs/ を読まない。~/.emacs.d は Emacs の初回起動で自動的に作られる |
| 対応策 | 実際に読まれる場所へ置く。下記の「完了条件の詳細」のとおり。本リポジトリの .devcontainer/post-create.sh は同じ規則で orchestrator が対応済み(feature/prj-0001/devcontainer-emacs-init) |
| 依存事項 | PJR-J7WE |
| 完了条件 | 下記の「完了条件の詳細」を満たす |
3.1. 完了条件の詳細
- 生成する post-create は、
~/.emacs、~/.emacs.el、~/.emacs.d/init.el、~/.config/emacs/init.elのいずれかがあれば何もしない(利用者の設定を優先する)。 - いずれもない場合、
~/.emacs.dディレクトリがあれば~/.emacs.d/init.elに、なければ~/.config/emacs/init.elにテンプレートを置く。 - 置いた場所を post-create の出力に表示する。
- unit test で、生成された post-create の処理を一時的な HOME で実行し、次を確かめる。
- 何もない場合は
~/.config/emacs/init.elに置かれる。 - 空の
~/.emacs.dがある場合は~/.emacs.d/init.elに置かれる。 ~/.emacsがある場合は何も置かれない。
- 何もない場合は
- command-reference と remote-host-development-guide の配置の説明を直す。
- CHANGELOG の v0.3.0 の devcontainer scaffold の項目に追記する。
npm run checkが通る。
4. 対応結果
- post-create は
~/.emacs、~/.emacs.el、~/.emacs.d/init.el、~/.config/emacs/init.elのいずれかがあれば利用者設定を優先し、テンプレートを配置しないようにした。 - 設定ファイルが無く、空の
~/.emacs.dがある場合は~/.emacs.d/init.elへ、それ以外は~/.config/emacs/init.elへ配置し、実際の配置先を出力するようにした。 - unit test で一時的な
HOMEに生成後の post-create を実行し、空のホーム、空の~/.emacs.d、既存の~/.emacsの3ケースを検証するようにした。 - specdojo:command-reference、specdojo:remote-host-development-guide、
CHANGELOG.mdの案内を新しい配置規則へ更新した。
5. 関連ドキュメント
- prj-0001:pjr-j7we-devcontainer-emacs-template(Emacs のテンプレートの展開)