aboutsummaryrefslogtreecommitdiff
path: root/emacs
diff options
context:
space:
mode:
authorHenry J. Webster <hwebs@hwebs.info>2026-10-17 11:51:07 -0500
committerHenry J. Webster <hwebs@hwebs.info>2026-10-17 11:51:07 -0500
commita095f8dc7afac7100f475a981cdbc3173db57991 (patch)
treecdfd694d11c8cc2a3e20d4653f27d830aed105f7 /emacs
parent3047a1edc3fefddc48b2944cdf8423f07bd21c47 (diff)
emacs: move backup and auto-save dirs to $XDG_HOME_STATE
Diffstat (limited to 'emacs')
-rw-r--r--emacs/.config/emacs/init.el24
1 files changed, 24 insertions, 0 deletions
diff --git a/emacs/.config/emacs/init.el b/emacs/.config/emacs/init.el
new file mode 100644
index 0000000..b616a02
--- /dev/null
+++ b/emacs/.config/emacs/init.el
@@ -0,0 +1,24 @@
+;;; init.el --- Emacs configuration -*- lexical-binding: t; -*-
+
+;; Keep recovery files out of projects and the configuration directory.
+(let* ((xdg-state (getenv "XDG_STATE_HOME"))
+ (state-dir
+ (expand-file-name
+ "emacs/"
+ (if (and xdg-state (not (equal xdg-state "")))
+ xdg-state
+ "~/.local/state/")))
+ (backup-dir (expand-file-name "backups/" state-dir))
+ (auto-save-dir (expand-file-name "auto-saves/" state-dir)))
+ ;; Recovery copies may contain sensitive data.
+ (dolist (directory (list state-dir backup-dir auto-save-dir))
+ (make-directory directory t)
+ (set-file-modes directory #o700))
+
+ (setq backup-directory-alist
+ `(("." . ,backup-dir))
+ auto-save-file-name-transforms
+ `((".*" ,auto-save-dir t))
+ ;; Session records used by `recover-session'.
+ auto-save-list-file-prefix
+ (expand-file-name ".saves-" auto-save-dir)))