Emacsをグラフィカルインタフェースで起動した時のみに特定のファイルを表示する

ひさびさにEmacs設定をいじって15分くらいハマったのでメモ。

自分は脳みそのワーキングメモリが少ないので、なんでもかんでもEmacsのscratchバッファに書いておいて他のファイルにまとめたりしている。しかしscratchバッファはデフォルトでは保存されず、警告なしにEmacs終了できてしまうため、scratch.txtというファイルを使ってそこに雑多なメモを放りこむようにしている。

いちいちscratch.txtを開くのが面倒くさいのでEmacs起動時にscratch.txtを開くようにしたい。調べてみると[1]のようにinitial-buffer-choiceで設定する方法が簡単そう。しかし、これを設定するとコマンドラインからemacs -nw hoge.txtというように起動しようとしても、最初にscratch.txtが表示されるようになってしまった。

これは致命的に使いづらいので、いろいろ調べてみたらドンピシャの解決方法を発見した[2]。コマンドラインから起動する場合には-nwで起動するようにしているので、グラフィカルインタフェース起動のときのみscratch.txtをfind-fileするようにすればよい。

(when (display-graphic-p)
  (find-file "~/scratch.txt"))

ここまで書いて、コマンドライン引数の有無で判定すればよいということに気づいたけれど、ターミナル上でemacsをファイル名なしで起動することがないので、これでいいや。