emacs --daemon + emacsclient で起動したときも、daemon 使わず起動したときも期待通りの設定で動くようにする (途中)
途中なんだけどメモっておかないと忘れるので。
やりたいことは…
- Emacs の起動高速化したい、
emacs --daemon
が使えそう - 今すでにある「環境によらず同じ初期化ファイル」というのはキープしたい
emacs --daemon
+emacsclient
も、単にemacs
を起動しても動くようにしたい- text terminal で
emacs -nw
で起動した場合も、GUIで起動した場合も動くようにしたいが、それぞれで見た目とか設定を変えたい可能性もある
↑こんな感じ。
で、こんなの↓を作ってみて
それでわかった?ことは…
emacs --daemon
で初期化ファイルを読み込んだときはwindow-system
はnil
なので一部設定ができないemacsclient
で起動したときに設定を遅延すればよくて使えそうな hook がafter-make-frame-hook
- daemon 使用時と非使用時(普通に
emacs
起動したとき)で初期化ファイルを共有するためには…- GUI 設定を関数にまとめとく
- その関数を
after-make-frame-hook
にひっかけておく when (window-system)
のときは hook が呼ばれるのを待たずにその関数を呼んじゃう- これだけだとフレーム作るたびに関数が呼ばれるので、関数の最後で自分自身を
remove-hook
しとく
after-make-frame-hook
は frame 生成後に呼ばれるのでdefault-frame-alist
とかをそこで設定しても frame には反映されない?- とりあえず
(modify-frame-parameters (selected-frame) default-frame-alist)
的なことをすれば解決はできそう
- とりあえず
まぁ、何が言いたいかというと、 emacs --daemon
がもうちょっと使いやすいと嬉しい、と。