日記はScrapboxに移動しました。

scratchバッファとファイルを同期する

*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)

Leave a Reply

Your email address will not be published. Required fields are marked *