system-manager-wakasu
 1;;; 00-clean.el --- -*- lexical-binding: t; -*-
 2;;; Commentary:
 3;;; no-littering and recentf configurations
 4;;; Note: this file is autogenerated from an org-mode file.
 5;;; Code:
 6
 7(setopt make-backup-files nil)
 8(setopt backup-inhibited nil) ; Not sure if needed, given `make-backup-files'
 9(setopt create-lockfiles nil)
10
11(use-package recentf
12  :hook (after-init . recentf-mode)
13  :custom
14  (recentf-max-saved-items 500)
15  (recentf-save-file (locate-user-emacs-file "auto-save-list/recent-file-list.el"))
16  (recentf-auto-cleanup "8:00am")
17  (recentf-show-file-shortcuts-flag nil)
18  (recentf-exclude
19   '("\\.?cache" ".cask" "url" "COMMIT_EDITMSG\\'" "bookmarks"
20     "\\.\\(?:gz\\|gif\\|svg\\|elc\\|png\\|jpe?g\\|bmp\\|xpm\\)$"
21     "\\.?ido\\.last$" "\\.revive$" "/G?TAGS$" "/.elfeed/"
22     "^/tmp/" "^/var/folders/.+$" "^/sudo:" "^/su:" "^/ssh:" "^/sshfs:"
23     (lambda (file) (file-in-directory-p file package-user-dir))))
24  :config
25  (push (expand-file-name recentf-save-file) recentf-exclude)
26  ;; Magic advice to rename entries in recentf when moving files in
27  ;; dired.
28  (defun rjs/recentf-rename-notify (oldname newname &rest args)
29    (if (file-directory-p newname)
30        (rjs/recentf-rename-directory oldname newname)
31      (rjs/recentf-rename-file oldname newname)))
32
33  (defun rjs/recentf-rename-file (oldname newname)
34    (setq recentf-list
35          (mapcar (lambda (name)
36                    (if (string-equal name oldname)
37                        newname
38                      oldname))
39                  recentf-list))
40    recentf-cleanup)
41
42  (defun rjs/recentf-rename-directory (oldname newname)
43    ;; oldname, newname and all entries of recentf-list should already
44    ;; be absolute and normalised so I think this can just test whether
45    ;; oldname is a prefix of the element.
46    (setq recentf-list
47          (mapcar (lambda (name)
48                    (if (string-prefix-p oldname name)
49                        (concat newname (substring name (length oldname)))
50                      name))
51                  recentf-list))
52    recentf-cleanup)
53  (add-to-list 'recentf-filename-handlers 'abbreviate-file-name)
54  (advice-add 'dired-rename-file :after #'rjs/recentf-rename-notify))
55
56
57;; 2024-07-08: Do I have to setup this, or should I do like prot, disable *all* backup, lockfile, …
58(use-package no-littering               ; Keep .emacs.d clean
59  :config
60  (require 'recentf)
61  (add-to-list 'recentf-exclude no-littering-var-directory)
62  (add-to-list 'recentf-exclude no-littering-etc-directory)
63
64  ;; Move this in its own thing
65  (setq
66   create-lockfiles nil
67   delete-old-versions t
68   kept-new-versions 6
69   kept-old-versions 2
70   version-control t)
71
72  (setq
73   backup-directory-alist
74   `((".*" . ,(no-littering-expand-var-file-name "backup/")))
75   auto-save-file-name-transforms
76   `((".*" ,(no-littering-expand-var-file-name "auto-save/") t))))
77
78(provide '00-clean)
79;;; 00-clean.el ends here