2

I'm trying out the dashboard package and noticed that my .org files kept getting added to the recentf list, because dashboard uses OrgMode to generate the agenda that it displays.

So I added code to dashboard that boils down to:

;; When rendering the dashboard, do the following:

;; if recentf mode is on, turn it off
;; so we don't add items to the Most Recently Used list:
    (if (recentf-enabled-p) (recentf-mode -1))

;; render the dashboard by rendering each widget

;; if recentf mode was originally on, turn it back on
;; this is pseudocode, of course :)
    (if (recentf-WAS-enabled-p) (recentf-mode))

This works (I'm not saving the information into my recentf list) but this also has the effect of saving my recentf list every time that I disable recentf-mode. This happens every time I switch back to the dashboard buffer.

My question: is there a way to disable recentf-modewithout flushing the list to disk?

What I'm really trying to do is temporarily get recentf-mode to stop recording new entries in the list - I'm only turning it off because there doesn't seem to be another way to do that.

MikeTheTall
  • 659
  • 4
  • 11

1 Answers1

3

You can let-bind find-file-hook to prevent Recentf from recording the file, e.g.,

(let ((find-file-hook (remq 'recentf-track-opened-file find-file-hook)))
  (find-file "test.txt"))

Then to bypass Recentf during M-x org-agenda, use this:

(define-advice org-agenda (:around (old-fun &rest args) skip-recentf)
  (let ((find-file-hook (remq 'recentf-track-opened-file find-file-hook)))
    (apply old-fun args)))

I don't know about Dashboard, but I think the same technique should work, maybe simply replacing org-agenda with dashboard-get-agenda.

Drew
  • 75,699
  • 9
  • 109
  • 225
xuchunyang
  • 14,302
  • 1
  • 18
  • 39