Qiitaにinit.el
の設定例として書く程度で完結するだろー、とか思ってたら全然簡単なかったのでzonuexe/init-open-recentf.elにまとめた。
やりたかったこと
-
emacs hoge.txt
みたいにファイル名指定で起動したら何もしない (最初からファイル開かれてるので) - Emacs起動時にファイルが開かれてなかったら、
recentf
の履歴からファイルを開こうとする
その前に
recentf
は「最近使ったファイル」を利用するための機能。
Emacsを快適に使うファイル周りの設定紹介あたりを参考にしてrecentf
の設定をするとよい。ただし、inhibit-startup-message
の設定とadd-hook
は不要。recentf-ext
はインストールしてもしなくてもいい。
とにかく導入する方法
最近のべんり機能を使ってるので、Emacs 24.4以上が必須。
- zonuexe/init-open-recentf.elをもってくる
-
init.el
か何かに(init-open-recentf)
って書く
MELPAを設定してpackage-install
とか、Caskでインストールとか、El-Getでインストールとか。
発展的な設定
recentfとか知らねーよ、ただファイル開けりゃいいんだよ、ってときはこうする。
(setq init-open-recentf-function #'find-file)
(init-open-recentf)
やったこと
Emacs Lispを勉強したいひと向けの解説。具体的なことは書かないので興味あったらコードを読みにいってね。
Helmとかidoとか活用する
もしHelmとかidoとか使ってたら、それを使ってrecentfを開くようにする。Anythingがあればそれを使って、どちらもなければデフォルトのrecentf-open-files
を利用する。
「ファイルが開かれてなかったら」
ちょっとびっくりだった。M-x list-buffers
とかあるから開かれてるファイル一覧利用できる機能とかあるかと思ったけど、結局init-open-recentf-buffer-files
はシンプルに再実装しちゃった…
初期化後のタイミングにうまくひっかける
Emacsには何かのタイミングで処理をひっかけるための「フック」と呼ばれる仕組みが用意されてる。たいていbefore-xxx-hook
とafter-xxx-hook
みたいに前後にひっかけられるようになってて、初期化処理でも例外ではなくてafter-init-hook
, emacs-startup-hook
, window-setup-hook
といくつかフックが用意されてるので、ふつうはこれを利用すればいい…
……いいと思ったんだけどなあ。
個人的にはEmacsの起動画面は大好きなので、これを潰すのは却下。同様の理由でinitial-buffer-choice
に指定するのも却下。
まとめ
ひたすらstartup.el
を読みまくって、Emacsの起動プロセスについて説明できるようにはなった。あとnadvice.el
が最高で、異常にべんりだった。