如何防止在 recentf 列表中处理和列出的 peep-dired 文件?

How to prevent peep-dired files processed and listed in recentf list?

Emacs Recentf 构建了一个最近打开的文件列表,以便于以后访问。如果我使用 peep-dired 预览文件,recentf 列表将被 peep-dired 列表淹没。如果文件来自窥视进程,是否有更好的方法来排除这些文件?

我已经尝试过如下操作,但没有成功。

(define-globalized-minor-mode my-global-recentf-mode recentf-mode
  (lambda ()
      (unless (or (minibufferp)
          (derived-mode-p 'dired-mode 'peep-dired-mode 'super-save-mode))
          (recentf-mode 1))))
(my-global-recentf-mode 1)
'

您应该可以使用选项 recentf-exclude 来排除您想要排除的文件。如果您想排除该目录中的所有文件,只需提供与目录名称匹配的正则表达式(或谓词)。

(另见选项 recentf-keep。)

将以下内容放入 ~/.emacs 文件,然后键入 M-x eval-buffer 或重新启动 Emacs:

(eval-after-load "peep-dired"
  '(progn
     (defun peep-dired-display-file-other-window--recentf-fix (orig-fun &rest args)
       (let ((recentf-exclude '(".*")))
         (apply orig-fun args)))

     (advice-add 'peep-dired-display-file-other-window :around
                 #'peep-dired-display-file-other-window--recentf-fix)))

此代码确保 recentf-exclude 设置为匹配任何文件名,只要您在 dired 模式下查看文件。