Emacsデスクトップモジュールを使用して、セッション間で開いているバッファーを保存します。ただし、これにより必要以上のバッファが蓄積されることがわかったため、デスクトップファイルに保存する直前にバッファリストをクリーンアップする小さな関数を作成しました。これは期待どおりに機能しますが、奇妙な理由で.emacs.desktopがときどきスクランブルされます。つまり、開始時に別のバッファーの一部が含まれ、次に目的のコンテンツ、次に他のバッファーの結果が含まれます。なぜこれが起こるのか、私には少しもわかりません。これが私の.emacsファイルからの抜粋です:
(defun kill-old-buffers ()
"Kill buffers from end of buffer list (not used recently) until no more than 50 buffers are left. Remove temporary buffers first"
(interactive)
(let* (desktop-buffer (current-buffer))
(dolist (buffer (buffer-list))
(if (or (string-match "^\*" (buffer-name buffer)) (string-match "\.hpp$" (buffer-name buffer)))
(kill-buffer buffer)
)
)
(setq all-buffers (reverse (buffer-list)))
(while (> (safe-length all-buffers) 50)
(setq buffer (pop all-buffers))
(if (not (string-equal (buffer-name buffer) (buffer-name (current-buffer))))
(kill-buffer buffer)
)
)
(switch-to-buffer desktop-buffer)
))
;; Kill old rarely-used buffers before saving
(add-hook 'desktop-save-hook
'(lambda () (kill-old-buffers)))
どんな助けでもいただければ幸いです。