From d2b8f0cdf59e00e1e6d239fd08b2d3ae4d9a4455 Mon Sep 17 00:00:00 2001 From: Richard Qin Date: Thu, 29 Oct 2026 01:11:01 +0800 Subject: Configure Emacs core modules Signed-off-by: Richard Qin --- lisp/core/init-files.el | 79 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 lisp/core/init-files.el (limited to 'lisp/core/init-files.el') diff --git a/lisp/core/init-files.el b/lisp/core/init-files.el new file mode 100644 index 0000000..0973df3 --- /dev/null +++ b/lisp/core/init-files.el @@ -0,0 +1,79 @@ +;;; init-files.el --- File management -*- lexical-binding: t; -*- + +;; Copyright (C) 2026 Richard Qin +;; SPDX-License-Identifier: GPL-3.0-or-later + +;; Author: Richard Qin +;; This file is not part of GNU Emacs. + +;;; Commentary: + +;; Configure file backups and automatic saving. +;; Store generated files under the var/ directory. + +;;; Code: + +;; ------------------------------------------------------------ +;; Directories +;; ------------------------------------------------------------ + +(defvar my/backup-directory + (expand-file-name "var/backups/" user-emacs-directory) + "Directory for backup files.") + +(defvar my/auto-save-directory + (expand-file-name "var/auto-save/" user-emacs-directory) + "Directory for auto-save files.") + +(defvar my/auto-save-list-directory + (expand-file-name "var/auto-save-list/" user-emacs-directory) + "Directory for auto-save session records.") + +(dolist (dir (list my/backup-directory + my/auto-save-directory + my/auto-save-list-directory)) + (make-directory dir t)) + + +;; ------------------------------------------------------------ +;; Backups +;; ------------------------------------------------------------ + +;; Enable backup files. +(setq make-backup-files t) + +;; Store all backups in a dedicated directory. +(setq backup-directory-alist + `(("." . ,my/backup-directory))) + +;; Use numbered backups. +(setq version-control t) + +;; Keep several versions of each file. +(setq kept-new-versions 10 + kept-old-versions 2 + delete-old-versions t) + + +;; ------------------------------------------------------------ +;; Auto-save +;; ------------------------------------------------------------ + +;; Enable automatic saving. +(setq auto-save-default t) + +;; Store auto-save files in a dedicated directory. +;; SHA-1 avoids excessively long generated filenames. +(setq auto-save-file-name-transforms + `((".*" ,my/auto-save-directory sha1))) + +;; Store auto-save session records separately. +(setq auto-save-list-file-prefix + (expand-file-name + ".saves-" + my/auto-save-list-directory)) + + +(provide 'init-files) + +;;; init-files.el ends here -- cgit v1.2.3