]> code.delx.au - dotemacs/commitdiff
auto recentf can use emacs25 inhibit-message
authorJames Bunton <jamesbunton@delx.net.au>
Mon, 19 Sep 2016 11:56:43 +0000 (21:56 +1000)
committerJames Bunton <jamesbunton@delx.net.au>
Mon, 19 Sep 2016 11:56:43 +0000 (21:56 +1000)
lisp/my-recentf.el

index a96f6300ffd1a63f400e2cfb65fb618ecb18921a..4f8ba5d311b580e7cf59033422c48dd5d0eb1b93 100644 (file)
 (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/with-silence/advice-message)
-  (advice-add 'write-region :around #'my/with-silence/advice-write-region)
-  (unwind-protect
-      (funcall function)
-    (advice-remove 'message #'my/with-silence/advice-message)
-    (advice-remove 'write-region #'my/with-silence/advice-write-region)))
-
-(defun my/with-silence/advice-message (original-function &rest args)
-  (ignore original-function)
-  (apply #'format args))
-
-(defun my/with-silence/advice-write-region (original-function &rest args)
-  (setf (nth 4 args) 'nomsg)
-  (apply original-function args)
-  (set-buffer-modified-p nil))
+  (when (my/recentf-has-changed)
+    (my/with-inhibit-message #'recentf-cleanup)
+    (when (equal recentf-list my/recentf-list-prev)
+      (my/with-inhibit-message #'recentf-save-list)
+      (setq my/recentf-list-prev recentf-list))))
+
+(defun my/recentf-has-changed ()
+  (not (equal recentf-list my/recentf-list-prev)))
+
+(defun my/with-inhibit-message (function)
+  (let ((old-inhibit-message inhibit-message))
+    (setq inhibit-message t)
+    (unwind-protect
+        (funcall function)
+      (setq inhibit-message old-inhibit-message))))
 
 (recentf-mode 1)