dotemacs

My Emacs configuration
git clone git://git.entf.net/dotemacs
Log | Files | Refs | LICENSE

commit 4a2b1b6cc96593fe80ccb13eccdd933bc41f21b4
parent deed628864ee2f765ad8f278be075050ab7776b5
Author: Lukas Henkel <lh@entf.net>
Date:   Sat, 14 May 2022 20:08:12 +0200

resurrect-mode

Diffstat:
Minit.el | 2++
Alisp/lh-resurrect.el | 33+++++++++++++++++++++++++++++++++
2 files changed, 35 insertions(+), 0 deletions(-)

diff --git a/init.el b/init.el @@ -12,6 +12,7 @@ load-path) (require 'lh) +(require 'lh-resurrect) (require 'iso-transl) (with-eval-after-load 'paredit @@ -231,6 +232,7 @@ '(inferior-lisp-program "ros run") '(kept-new-versions 10) '(kept-old-versions 5) + '(lh/global-resurrect-mode t) '(marginalia-mode t) '(mouse-wheel-progressive-speed nil) '(mouse-wheel-scroll-amount '(5 ((shift) . hscroll) ((meta)) ((control) . text-scale))) diff --git a/lisp/lh-resurrect.el b/lisp/lh-resurrect.el @@ -0,0 +1,33 @@ +;; -*- lexical-binding: t; -*- + +(defgroup lh/resurrect nil + "Records killed buffers and allows them to be resurrected." + :group 'convenience + :prefix "lh/resurrect") + +(defvar lh/resurrect-recently-killed nil) + +(defvar lh/resurrect-mode-map + (let ((map (make-sparse-keymap))) + (define-key map (kbd "C-x R") #'lh/resurrect-latest) + map)) + +(defun lh/resurrect--kill-buffer-hook () + (when buffer-file-name + (push buffer-file-name lh/resurrect-recently-killed))) + +(defun lh/resurrect-latest () + (interactive) + (when-let (fn (pop lh/resurrect-recently-killed)) + (find-file fn))) + +(define-minor-mode lh/global-resurrect-mode + "Records killed buffers and allows them to be resurrected." + :global t + :group 'lh/resurrect + :keymap lh/resurrect-mode-map + (if lh/global-resurrect-mode + (add-hook 'kill-buffer-hook #'lh/resurrect--kill-buffer-hook) + (remove-hook 'kill-buffer-hook #'lh/resurrect--kill-buffer-hook))) + +(provide 'lh-resurrect)