fedora-csb-system-manager
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