こんにちは、chibaです!
Firefoxを使っていると良くお世話になるre-open tab(Ctrl+Shift+T)ですが、Emacsでも欲しくなりました。
ということで早速作ってみましたが、バッファをそのまま復元するというのは分からなかったので、前回閉じたファイルだけ復活できるというバージョンで。
バッファを復元できる方法が分かれば、それを試してみたいですね。
;; utils
(defmacro aif (test then &optional else)
`(let ((it ,test))
(if it
,then
,else)))
(defmacro awhen (test &rest body)
`(aif ,test
(progn
,@body)))
(progn
;; re-open-file
(defvar *recent-buffers*)
(setq *recent-buffers* () )
(defadvice kill-buffer (before kill-buffer-before activate)
(awhen buffer-file-name
(push it *recent-buffers*)))
;; (ad-deactivate 'kill-buffer)
(defun re-open-file ()
(interactive)
(aif *recent-buffers*
(find-file (pop it))
(message "null")))
(define-key global-map [(control x) (shift ?k)]
're-open-file) )
■