recentf文件列表总是达不到设置的recentf-max-saved-items值就被截断,可能是什么原因?

emacs 27/28上都是这样,用的是自写的配置文件,与recentf有关的是这样的

(setq recentf-auto-cleanup 'never
      recentf-max-saved-items 5000)

;; 定时保存recentf
(recentf-mode 1)
(recentf-load-list)
(run-at-time 60 300 'recentf-save-list)
(add-to-list 'recentf-exclude ".emacs.d/cnfonts")

但我的recentf文件列表,一直就没有超过30个,而且数量不固定,不知道什么时候就会被截断。请问各位有可能是什么引起的?

二分法排查啊,你这一点信息没人帮的上忙的。

可以调戏试下,看看能不能得到更多信息

  1. 去掉定时器问题是否还在
  2. 把3000改为一个<30的数字
  3. 手动保存是否有问题,命令好像是 recentf-save-list

这几个方法都试过,单独操作都是符合预期的。

emacs有没有办法监控一个变量(recentf-list)的变化?或者去监控对文件(recentf)的写入?

我现在猜测是因为我这几天在频繁改emacs配置文件,同时我设置recentf的配置文件加载顺序比较靠后,导致当有配置文件出错时,recentf的配置没加载进来,而默认的配置是在mode切换的时候就cleanup recentf,从而导致recentf被截断

我把recentf的配置优先级提高试一下