From 29c287a8c31bebe9dd40b499415511c96a1ef6fa Mon Sep 17 00:00:00 2001 From: Case Duckworth Date: Wed, 30 Mar 2022 18:14:56 -0500 Subject: I waited way too long to make this commit --- lisp/user-save.el | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'lisp/user-save.el') diff --git a/lisp/user-save.el b/lisp/user-save.el index 8e01af1..33b6f4c 100644 --- a/lisp/user-save.el +++ b/lisp/user-save.el @@ -8,6 +8,8 @@ ;;; Code: +(require 'cl-lib) + (defgroup user-save nil "Group for `user-save-mode' customizations." :group 'emacs @@ -19,11 +21,16 @@ This option is only useful is `user-save-mode' is active when Emacs is killed." :type 'boolean) +(defcustom user-save-inhibit '(special-mode) + "List of modes to inhibit `user-save-mode' from activation in." + :type '(repeat symbol)) + (defvar user-save-hook nil "Hook to run when the user, not Emacs, saves the buffer.") (defvar user-save-mode-map (let ((map (make-sparse-keymap))) (define-key map (kbd "C-x C-s") #'user-save-buffer) + (define-key map (kbd "C-x s") #'user-save-some-buffers) map) "Keymap for `user-save-mode'. This map shadows the default map for `save-buffer'.") @@ -81,7 +88,16 @@ whether the buffer needs to be saved." (user-save-mode -1)) ;;;###autoload -(define-globalized-minor-mode user-save-global-mode user-save-mode user-save-mode +(defun user-save-mode-in-some-buffers () + "Enable `user-save-mode', but only in some buffers. +The mode will not be enabled in buffers derived from modes in +`user-save-inhibit', or in the minibuffer." + (unless (or (cl-some #'derived-mode-p user-save-inhibit) + (minibufferp)) + (user-save-mode +1))) + +;;;###autoload +(define-globalized-minor-mode user-save-global-mode user-save-mode user-save-mode-in-some-buffers (if user-save-global-mode (when user-save-hook-into-kill-emacs (add-hook 'kill-emacs-hook #'user-save-some-buffers)) -- cgit 1.4.1-21-gabe81