1 ;; -*- lexical-binding: t; -*-
3 (defgroup lh/resurrect nil
4 "Records killed buffers and allows them to be resurrected."
6 :prefix "lh/resurrect")
8 (defvar lh/resurrect-recently-killed nil)
10 (defvar lh/resurrect-mode-map
11 (let ((map (make-sparse-keymap)))
12 (define-key map (kbd "C-x R") #'lh/resurrect-latest)
15 (defun lh/resurrect--kill-buffer-hook ()
16 (when buffer-file-name
17 (push buffer-file-name lh/resurrect-recently-killed)))
19 (defun lh/resurrect-latest ()
21 (when-let (fn (pop lh/resurrect-recently-killed))
24 (define-minor-mode lh/global-resurrect-mode
25 "Records killed buffers and allows them to be resurrected."
28 :keymap lh/resurrect-mode-map
29 (if lh/global-resurrect-mode
30 (add-hook 'kill-buffer-hook #'lh/resurrect--kill-buffer-hook)
31 (remove-hook 'kill-buffer-hook #'lh/resurrect--kill-buffer-hook)))
33 (provide 'lh-resurrect)