こんな感じ。
ちなみに、mapc ... で始まる箇所は、バッファ(たち)をdesktop-modeで復元後にbmを復元するための設定である。それゆえ、desktop-modeを使っていないひとには不要な設定である。復元した全バッファに対して処理を回しているので、そもそもbmを置いていないバッファに対しては不要な処理が回っており、非効率であるが、実質的に処理時間は無視できる。
bm-repository に登録されている全ファイルを開く、という設定はお好みで。確かにbm.elは開いていないバッファ(ファイル)に対しては一覧機能が働かない(bm-show-all)ので、それを改善する一つの方策ではある。bm.elの作者にとって何らかの理由があったうえで、bm-show-allの対象がopen済のバッファたちに限定されているのであろう。ちなみにリポジトリでもissueとして挙げられている。
(setq bm-restore-repository-on-load t) (add-hook 'emacs-startup-hook #'(lambda () (require 'bm) (setq bm-cycle-all-buffers t) (setq-default bm-buffer-persistence t) ;; bm-repository に登録されている全ファイルを開く ;; http://emacs.rubikitch.com/bm-repository-open/ ;; (defun bm-find-files-in-repository () ;; (interactive) ;; (cl-loop for (key . _) in bm-repository ;; when (file-exists-p key) ;; do (find-file-noselect key))) ;; (bm-find-files-in-repository) ;; ファイルに関連する全バッファを対象にrestore (mapc #'(lambda (buf) (with-current-buffer buf (bm-buffer-restore))) (cl-remove-if-not 'buffer-file-name (buffer-list))) (add-hook 'find-file-hooks #'bm-buffer-restore) (add-hook 'after-save-hook 'bm-buffer-save) (add-hook 'after-revert-hook #'bm-buffer-restore) (add-hook 'kill-buffer-hook #'bm-buffer-save) (add-hook 'kill-emacs-hook #'(lambda () (unless noninteractive (bm-buffer-save-all) (bm-repository-save))))))