「*scratch*バッファを自動保存する」からもらってきたのと合わせてやった。
- *scratch*バッファと同期するファイルはひとつだけ
- バッファ削除時、Emacs終了時にファイルに保存
- Emacs起動時に*scratch*バッファにそのファイルの内容をロードする
- 定期保存するほどのものでもないのでやらない。Emacsが落ちたら内容なくなる
(setq scratch-map-file "~/.scratch") (defun scratch-save-kill-emacs-hook () (let ((scratch-buf (get-buffer "*scratch*"))) (when scratch-buf (with-current-buffer scratch-buf (when (not (string= initial-scratch-message (buffer-string))) (write-file scratch-map-file nil)))))) (defun scratch-save-kill-buffer-hook () (when (equal (current-buffer) (get-buffer "*scratch*")) (unless (string= initial-scratch-message (buffer-string)) (write-file scratch-map-file nil)))) (defun scratch-read-after-init-hook () (let ((scratch-buf (get-buffer "*scratch*"))) (when scratch-buf (with-current-buffer scratch-buf (erase-buffer) (insert-file-contents scratch-map-file))))) (add-hook 'kill-emacs-hook 'scratch-save-kill-emacs-hook) (add-hook 'kill-buffer-hook 'scratch-save-kill-buffer-hook) (add-hook 'after-init-hook 'scratch-read-after-init-hook)