Commit f29761dc3b93
Changed files (1)
lisp
lisp/setup-files.el
@@ -9,14 +9,51 @@
(use-package ripgrep
:defer 2)
-(use-package recentf ; Manage recent files
- :defer 1
+(use-package recentf
+ :custom
+ (recentf-max-menu-items 15)
+ (recentf-max-saved-items 200)
+ (recentf-show-file-shortcuts-flag nil)
:config
+ (recentf-mode 1)
(add-to-list 'recentf-exclude "^/\\(?:ssh\\|su\\|sudo\\)?:")
+ ;; Magic advice to rename entries in recentf when moving files in
+ ;; dired.
+ (defun rjs/recentf-rename-notify (oldname newname &rest args)
+ (if (file-directory-p newname)
+ (rjs/recentf-rename-directory oldname newname)
+ (rjs/recentf-rename-file oldname newname)))
- (setq
- recentf-max-saved-items 200
- recentf-max-menu-items 15))
+ (defun rjs/recentf-rename-file (oldname newname)
+ (setq recentf-list
+ (mapcar (lambda (name)
+ (if (string-equal name oldname)
+ newname
+ oldname))
+ recentf-list))
+ recentf-cleanup)
+
+ (defun rjs/recentf-rename-directory (oldname newname)
+ ;; oldname, newname and all entries of recentf-list should already
+ ;; be absolute and normalised so I think this can just test whether
+ ;; oldname is a prefix of the element.
+ (setq recentf-list
+ (mapcar (lambda (name)
+ (if (string-prefix-p oldname name)
+ (concat newname (substring name (length oldname)))
+ name))
+ recentf-list))
+ recentf-cleanup)
+
+ (advice-add 'dired-rename-file :after #'rjs/recentf-rename-notify)
+
+ (defun contrib/recentf-add-dired-directory ()
+ "Include Dired buffers in the list. Particularly useful when
+combined with a completion framework's ability to display virtual
+buffers."
+ (when (and (stringp dired-directory)
+ (equal "" (file-name-nondirectory dired-directory)))
+ (recentf-add-file dired-directory))))
(setq view-read-only t) ; View read-only