Emacs が落ちたけど,余裕でした。

どもです。
おかげさまで,軽度のぎっくり腰的な症状も良くなっております。
というか,腰痛くて歩行に障害がある中,プールへ行ってまいりましたよ。
今年はあと1回くらい行く予定。

Emacs がてんぱったので,強制終了したけど,今回は余裕でした。

前回,前々回と Emacs がクラッシュしたときには,セッション情報を
失うという悲惨な目にあったでの,対策をしていたのですが,
今朝,その対策が効力を発揮したのです。
あー,つまり,30分ごとに セッション情報5つのファイルに順番に
保存していたので大丈夫でした,ということです。


んで,落ちたら,慌てずに,.sessin.ntemacs.{0,1,2,3,4} のうち,
最新のものをコピーするだけです。
これで失われるセッション情報は,高々30分ということになるのです。
その方法はというと,なんのこたーない,タイマーで30分ごとにセッション情報を
ファイルに保存するというものです。
つまり,以下。

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; session.el
;; http://emacs-session.sourceforge.net/
(defvar my-timer-for-session-save-session nil)
(defvar my-session-save-session-index 0)

(defun my-session-save-session ()
  (let ((session-save-file
         (expand-file-name (format "~/.session/.session.ntemacs.%d"
                                   my-session-save-session-index))))
    (session-save-session)
    (setq my-session-save-session-index
          (% (1+ my-session-save-session-index) 5))))

(when (require 'session nil t)
  (setq session-save-file-coding-system 'utf-8-unix)
  (setq session-save-file (expand-file-name "~/.session/.session.ntemacs"))
  (setq session-initialize '(session places))
  (setq session-globals-max-size 1024)
  (setq session-globals-max-string (* 1024 1024))
  (setq session-globals-include '((kill-ring 512)
                                  (session-file-alist 512)
                                  (file-name-history 512)
                                  (tags-table-set-list 128)
                                  (tags-table-list 128)))
  (add-hook 'after-init-hook 'session-initialize)
  ;; Save session info every 30 minutes
  (setq my-timer-for-session-save-session (run-at-time t 1800 'my-session-save-session)))

まとめ

備えあればなんとやら。
発展させて,1日に1回別のパーティションに保存するとか色々ありそうですね。
そうなってくると,それは,cron さんの仕事になるのかにゃ。