]> code.delx.au - dotemacs/commitdiff
recentf-mode should be quiet
authorJames Bunton <jamesbunton@delx.net.au>
Fri, 22 Jul 2016 11:21:28 +0000 (21:21 +1000)
committerJames Bunton <jamesbunton@delx.net.au>
Fri, 22 Jul 2016 11:22:07 +0000 (21:22 +1000)
init.el
lisp/my-other-modes.el
lisp/my-recentf.el [new file with mode: 0644]

diff --git a/init.el b/init.el
index 7b90112b423560db341f28d00f315ac8432af748..398500c1a7bcb362be0080f66e13e18bedabe229 100644 (file)
--- a/init.el
+++ b/init.el
@@ -11,6 +11,7 @@
 (load-library "my-gui")
 (load-library "my-keys")
 (load-library "my-completion")
+(load-library "my-recentf")
 (load-library "my-other-modes")
 (load-library "my-minor-modes")
 (load-library "my-file-modes")
index de34dfc6f3ceed60ebd3c5ff0d8e7320a376b500..58848b665a6a19b1d903127c5d9631f95475102e 100644 (file)
             (unless (eq ibuffer-sorting-mode 'alphabetic)
               (ibuffer-do-sort-by-alphabetic))))
 
-(require 'recentf)
-(recentf-mode 1)
-(setq recentf-max-saved-items 50)
-(run-at-time nil 600 'recentf-save-list)
-
 (setq require-final-newline t)
 
 (require 'restclient)
diff --git a/lisp/my-recentf.el b/lisp/my-recentf.el
new file mode 100644 (file)
index 0000000..977d153
--- /dev/null
@@ -0,0 +1,31 @@
+(require 'recentf)
+
+(setq recentf-exclude '("recentf"))
+(setq recentf-max-saved-items 1000)
+(run-with-idle-timer 30 t #'my/recentf-periodic)
+
+(defvar my/recentf-list-prev nil)
+
+(defun my/recentf-periodic ()
+  (my/with-silence #'recentf-cleanup)
+  (unless (equal recentf-list my/recentf-list-prev)
+    (my/with-silence #'recentf-save-list)
+    (setq my/recentf-list-prev recentf-list)))
+
+(defun my/with-silence (function)
+  (advice-add 'message :around #'my/advice/silent-message)
+  (advice-add 'write-region :around #'my/advice/silent-write-region)
+  (unwind-protect
+      (funcall function)
+    (advice-remove 'message #'my/advice/silent-message)
+    (advice-remove 'write-region #'my/advice/silent-write-region)))
+
+(defun my/advice/silent-write-region (original-function &rest args)
+  (setf (nth 4 args) 'nomsg)
+  (apply original-function args)
+  (set-buffer-modified-p nil))
+
+(defun my/advice/silent-message (original-function &rest args)
+  (apply #'format args))
+
+(recentf-mode 1)