やっぱりなったー。だからいってんじゃん。
どうもです。
入り
ついにというか,やはりというか,その時はやってきたのです。
Emacsを起動して数日が経過。
shell-mode のバッファで,ついついバイナリファイルをcatしてしまいました。
shell-mode では,C-cもC-dも,というか,Windows上でcygwinとかEmacs内でシェルを
動かしていると,C-c の効きがいまいちなのは気のせいか?
シグナル処理? Linuxではきびきび反応してくれた記憶がある。
ま,いいや。
ほいで,そのうち終わるだろうとほっといたら,エラーでEmacsが落ちた。
・・・。
ゴクッ。
・・・。
Emacsを立ち上げる。
やっぱりだー!! この数日分のセッション情報,開いたバッファやら,実行したコマンドやら,
なんやらかんやらが,保存されてないお。
だから,言ってんじゃん。タイマーで session-save-session を呼べば,
少しは救われるだろうって。でもそのときは,対岸の火事というかなんというか。
タイマー
なので,Info読んで設定を書いてみた。
保存する間隔はどのくらいが適当かなと考えて,30分毎に保存しておけば,
万が一Emacsが落ちても,ダメージは少ないだろうと,適当な判断。
で,できたのが,以下の最後の行ね。
my-timer-for-session-save-session に,作ったタイマーを保存しているのは,
なにかしらの理由でキャンセルしたい場合に,あれば便利だから。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; session.el ;; http://emacs-session.sourceforge.net/ (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) ;; TODO make it be able to use shell-command-history ;; keyword: comint-input-ring ; (shell-command-history 512) (tags-table-set-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 'session-save-session)))
おまけ
キャンセルする場合は,(cancel-timer my-timer-for-session-save-session) すればオッケー牧場。
また,timer-list を覗けばどんなタイマーがあるかわかる。
最初お試しで,5秒毎にメッセージを表示するタイマーを作ってみた。
(run-at-time t 5 '(lambda () (message "Hello from timer")))
をしたものの,どうやって削除すればいいかわからず(笑)
5秒毎に,Hello from timer とか言われて。
うるせーよ,おまえさっきも同じこと言ってたし。
で,結局,(cancel-timer (cadddr timer-list)) して,なんとか削除。
また,run-at-time を評価するとそのたびにtimer-listにタイマーが追加されるので,
注意。
同じことをするタイマーが3つくらいできてしまったということは,ワタシに限っては,
ないので,注意されたい。