Subject: bug#67946: closed (Re: bug#67946: [PATCH v3] lisp/recentf.el: Add verbosity option)

From: [email-masked] (GNU bug Tracking System)
Date: Sat, 22 Feb 2025 13:52:07 +0000

Your bug report

#67946: 30.0.50; [RFC PATCH] Add an option to not report "Wrote ..." when saving recentf.

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
67946: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=67946
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#67946: [PATCH v3] lisp/recentf.el: Add verbosity option
From: Eli Zaretskii <[email-masked]>
To: Lockywolf Lockywolf <[email-masked]>
Cc: [email-masked], [email-masked], [email-masked]
Date: Sat, 22 Feb 2025 15:51:02 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

> From: Lockywolf Lockywolf <[email-masked]>
> Cc: [email-masked], [email-masked], [email-masked]
> Date: Sat, 22 Feb 2025 21:42:21 +0800
> 
> Eli Zaretskii <[email-masked]> writes:
> 
> > Thanks, but is this the right patch?  The previous problems with the
> > default value and the :version tag are back.
> 
> Sorry, I overlooked.
> 
> The one attached to this email should be the one.

Thanks, installed on the master branch.

> > Also, your email address in the commit looks strange; is that
> > intended?
> 
> Yes, this email is correct.

So you will use a different email address for each changeset?

Subject: 30.0.50; [RFC PATCH] Add an option to not report "Wrote ..." when saving recentf.
From: Vladimir Nikishkin <[email-masked]>
To: [email-masked]
Date: Thu, 21 Dec 2023 11:26:52 +0800
List-Id: <debbugs-submit.debbugs.gnu.org>

Dear Emacs Developers,

I have the following setting in my init.el

(add-hook 'buffer-list-update-hook 'recentf-track-opened-file)
(add-hook 'buffer-list-update 'recentf-save-list)

The first one is the one recommended by describe-function recentf-mode,
and the second one is to make this switch persistent, and resistant to
emacs being killed.

However, I am getting a lot of messages like
`Wrote /home/lockywolf/.emacs.d/recentf', which are not very helpful
normally.

I am attaching a trivial patch (001_patch-recentf-verbose.patch), which
adds a `recentf-verbose' defcustom, which, when set to nil, would
suppress these messages.

Please, consider including it into Emacs.

In GNU Emacs 30.0.50 (build 1, x86_64-slackware-linux-gnu, GTK+ Version
 3.24.31, cairo version 1.16.0) of 2023-09-22 built on
 laptop.lockywolf.net
Windowing system distributor 'The X.Org Foundation', version 11.0.12014000
System Description: Slackware 15.0 x86_64

Configured using:
 'configure --prefix=/usr --libdir=/usr/lib64 --sysconfdir=/etc
 --localstatedir=/var --program-prefix= --program-suffix=
 --mandir=/usr/man --infodir=/usr/info --without-gconf
 --without-gsettings --with-modules --with-json
 --with-native-compilation=aot --with-imagemagick --with-pdumper
 --with-xwidgets --enable-year2038 --with-tree-sitter --with-cairo-xcb
 --build=x86_64-slackware-linux 'CFLAGS=-O2 -fPIC -g''

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM HARFBUZZ IMAGEMAGICK
JPEG JSON LCMS2 LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG
RSVG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER
WEBP X11 XDBE XIM XINPUT2 XPM XWIDGETS GTK3 ZLIB

Important settings:
  value of $LC_COLLATE: C
  value of $LC_TIME: en_GB.UTF-8
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

Major mode: Dired by name

Minor modes in effect:
  memento-mori-mode: t
  highlight-doxygen-global-mode: t
  hes-mode: t
  global-highlight-parentheses-mode: t
  highlight-parentheses-mode: t
  global-color-identifiers-mode: t
  frecentf-mode: t
  idle-org-agenda-mode: t
  gnus-dired-mode: t
  mu4e-modeline-mode: t
  TeX-PDF-mode: t
  TeX-source-correlate-mode: t
  ido-everywhere: t
  async-bytecomp-package-mode: t
  global-git-commit-mode: t
  magit-auto-revert-mode: t
  server-mode: t
  global-flycheck-mode: t
  global-hl-todo-mode: t
  gdb-many-windows: t
  global-company-mode: t
  company-mode: t
  auto-insert-mode: t
  pdf-occur-dired-minor-mode: t
  pdf-occur-global-minor-mode: t
  shackle-mode: t
  dired-omit-mode: t
  global-auto-revert-mode: t
  electric-pair-mode: t
  which-function-mode: t
  global-hl-line-mode: t
  global-display-fill-column-indicator-mode: t
  display-fill-column-indicator-mode: t
  global-hi-lock-mode: t
  hi-lock-mode: t
  windmove-mode: t
  savehist-mode: t
  recentf-mode: t
  save-place-mode: t
  super-save-mode: t
  xterm-mouse-mode: t
  override-global-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  global-prettify-symbols-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  minibuffer-regexp-mode: t
  buffer-read-only: t
  size-indication-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  auto-save-visited-mode: t
  abbrev-mode: t

Load-path shadows:
/home/lockywolf/.emacs.d/elpa/company-cmake-0.1/company-cmake hides /home/lockywolf/.emacs.d/elpa/company-20230303.2331/company-cmake
/home/lockywolf/OfficialRepos/org-noter/org-noter hides /home/lockywolf/.emacs.d/elpa/org-noter-20230728.2037/org-noter
/home/lockywolf/OfficialRepos/org-noter/org-noter-core hides /home/lockywolf/.emacs.d/elpa/org-noter-20230728.2037/org-noter-core
/home/lockywolf/.emacs.d/elpa/cmake-mode-20230323.1312/cmake-mode hides /usr/share/emacs/site-lisp/cmake-mode
/home/lockywolf/.emacs.d/elpa/transient-20231112.923/transient hides /usr/share/emacs/30.0.50/lisp/transient
/home/lockywolf/.emacs.d/elpa/bind-key-20230203.2004/bind-key hides /usr/share/emacs/30.0.50/lisp/use-package/bind-key
/home/lockywolf/.emacs.d/elpa/flim-20230205.1423/sasl hides /usr/share/emacs/30.0.50/lisp/net/sasl

Features:
(shadow mail-extr face-remap emacsbug time-stamp shortdoc bug-reference
c++-ts-mode c-ts-mode c-ts-common cl-print ffap misearch multi-isearch
vc-git matlab matlab-scan matlab-syntax matlab-compat pulse dired-aux
company-oddmuse company-keywords make-mode company-etags company-gtags
company-dabbrev-code company-dabbrev company-files company-clang
company-capf company-cmake company-semantic company-template
company-bbdb init rc-local lockywolf-postamble-laptop
display-line-numbers lockywolf-exwm exwm exwm-input xcb-keysyms
exwm-manage exwm-floating xcb-cursor xcb-render exwm-layout
exwm-workspace exwm-core xcb-ewmh xcb-icccm xcb xcb-xkb xcb-xproto
xcb-types xcb-debug lockywolf-erc erc-track erc-match erc erc-backend
erc-networks erc-common erc-compat erc-loaddefs lockywolf-equake equake
lockywolf-gui-x11 hamburger-menu lockywolf-gui-general diary-lib
diary-loaddefs memento-mori highlight-doxygen highlight-escape-sequences
highlight-parentheses rainbow-mode color-identifiers-mode prettify-greek
form-feed tsdh-dark-theme lockywolf-calc calc calc-loaddefs calc-macs
lockywolf-monitoring frecentf persist frecency a dirtrack
idle-org-agenda lockywolf-autocomplete-ido avy
lockywolf-org-scientific-large org-download org-attach org-mind-map
org-sticky-header org-pdftools pdf-annot facemenu org-noter
org-noter-djvu org-noter-nov org-noter-pdf org-noter-core org2blog ox-wp
writegood-mode metaweblog xml-rpc url-http url-auth url-gw nsm hydra lv
htmlize org-journal org-crypt cal-iso org-sidebar org-ql-search
org-ql-view ov org-super-agenda ht org-ql peg ts org-habit org-duration
org-mru-clock ox-beamer ox-org ox-md ox-extra ox-odt rng-loc rng-uri
rng-parse rng-match rng-dt rng-util rng-pttrn nxml-parse nxml-ns
nxml-enc xmltok nxml-util ox-latex ox-icalendar org-agenda ox-html table
ox-ascii ox-publish ox org-clock ob-maxima ob-fortran ob-shell ob-latex
ob-scheme geiser-impl help-fns radix-tree geiser-custom geiser-base
geiser ob-C ob-plantuml org-tempo tempo org-protocol ox-youtube org-ebib
org-bibtex-extras ol-bibtex ox-bibtex org-inlinetask
org-fancy-priorities lockywolf-cryptography pinentry lockywolf-elfeed
lockywolf-email-pim bbdb bbdb-site gnus-dired mu4e-speedbar speedbar
ezimage dframe mu4e mu4e-org mu4e-notification notifications mu4e-main
mu4e-view gnus-art mm-uu mml2015 mm-view mml-smime smime gnutls dig
gnus-sum gnus-group gnus-undo gnus-start gnus-dbus gnus-cloud nnimap
nnmail mail-source utf7 nnoo gnus-spec gnus-int gnus-range gnus-win
mu4e-headers mu4e-compose mu4e-draft mu4e-actions mu4e-search mu4e-lists
mu4e-bookmarks mu4e-mark mu4e-message flow-fill mu4e-contacts
mu4e-update mu4e-folders mu4e-context mu4e-query-items mu4e-server
mu4e-modeline mu4e-vars mu4e-helpers mu4e-config mu4e-window
mu4e-obsolete message-view-patch auth-source-xoauth2 auth-source-pass
smtpmail-multi smtpmail khardel yaml-mode vdirel org-vcard lockywolf-tex
company-auctex vdm-snippets yasnippet bib-cite auctex-latexmk latex
latex-flymake tex-ispell tex-style tex texmathp cdlatex lockywolf-bibtex
ivy-bibtex bibtex-completion org-capture biblio biblio-download
biblio-dissemin biblio-ieee biblio-hal biblio-dblp biblio-crossref
biblio-arxiv timezone biblio-doi biblio-core ido f f-shortdoc s ebib
helm helm-global-bindings helm-easymenu helm-core async-bytecomp
helm-source helm-multi-match helm-lib async ivy delsel ivy-faces
ivy-overlay colir ebib-reading-list ebib-notes org-element org-persist
org-id org-refile org ob ob-tangle ob-ref ob-lob ob-table ob-exp
org-macro org-src ob-comint org-pcomplete org-list org-footnote
org-faces org-entities ob-emacs-lisp ob-core ob-eval org-cycle org-table
org-keys oc org-loaddefs cal-menu calendar cal-loaddefs ol org-fold
org-fold-core org-compat avl-tree org-version org-macs ebib-filters
ebib-keywords ebib-utils ebib-db parsebib mule-util bibretrieve
bibtex-utils reftex reftex-loaddefs reftex-vars bibtex
lockywolf-plantuml flycheck-plantuml plantuml-mode lockywolf-matlab
lockywolf-scheme scheme-complete scheme lockywolf-emacs-lisp
paredit-menu paredit lockywolf-helm lockywolf-vala vala-mode cc-langs
lockywolf-cpp clang-format+ clang-format eldoc-cmake cmake-mode rst
company-c-headers flycheck-clangcheck google-c-style cc-mode cc-fonts
cc-guess cc-menus cc-cmds lockywolf-fortran f90 lockywolf-bash sh-script
smie treesit executable lockywolf-version-control magit-bookmark
magit-submodule magit-blame magit-stash magit-reflog magit-bisect
magit-push magit-pull magit-fetch magit-clone magit-remote magit-commit
magit-sequence magit-notes magit-worktree magit-tag magit-merge
magit-branch magit-reset magit-files magit-refs magit-status magit
magit-repos magit-apply magit-wip magit-log magit-diff smerge-mode
git-commit log-edit message sendmail yank-media rfc822 mml mml-sec epa
epg epg-config mm-decode mm-bodies mm-encode mail-parse rfc2231
mailabbrev gmm-utils mailheader pcvs-util add-log magit-core
magit-autorevert magit-margin magit-transient magit-process with-editor
server magit-mode transient magit-git magit-base crm magit-section vc
vc-dispatcher lockywolf-spellchecking-hard languagetool
languagetool-server languagetool-console languagetool-java
languagetool-issue languagetool-correction languagetool-core flycheck
lockywolf-spellchecking-simple hl-todo compat flyspell ispell
lockywolf-debugging gdb-mi bindat gud lockywolf-advanced-editing eglot
external-completion jsonrpc flymake-proc flymake diff diff-mode ert
debug backtrace markdown-mode color company autoinsert ediff ediff-merg
ediff-mult ediff-wind ediff-diff ediff-help ediff-init ediff-util
lockywolf-ggtags ggtags hippie-exp etags fileloop xref project ewoc
lockywolf-tramp lockywolf-shells esh-help dash em-unix em-smart esh-mode
esh-var eshell esh-cmd generator esh-ext esh-opt esh-proc esh-io esh-arg
esh-module esh-groups esh-util lockywolf-paper-pdf-djvu djvu pdf-occur
ibuf-ext ibuffer ibuffer-loaddefs tablist advice tablist-filter
semantic/wisent/comp semantic/wisent semantic/wisent/wisent
semantic/util-modes semantic/util semantic semantic/tag semantic/lex
semantic/fw mode-local find-func cedet pdf-isearch let-alist pdf-misc
pdf-tools pdf-view derived pdf-cache pdf-info tq pdf-util pdf-macs
doc-view jka-compr image-mode exif ps-print ps-print-loaddefs lpr
lockywolf-downloaded-packages diminish shackle trace mic-paren cl
lockywolf-dired dired-x lockywolf-treesitter lockywolf-standard-packages
artist picture reporter rect eww url-queue thingatpt shr pixel-fill
kinsoku url-file svg dom puny mm-url gnus nnheader gnus-util range woman
man info-colors secrets dbus comp comp-cstr warnings xml locate dired
dired-loaddefs arc-mode archive-mode compile autorevert filenotify
elec-pair which-func imenu hl-line display-fill-column-indicator hi-lock
foldout edmacro kmacro noutline outline windmove bookmark
text-property-search savehist recentf tree-widget saveplace tramp-sh
tramp trampver tramp-integration files-x tramp-message tramp-compat xdg
shell pcomplete comint ansi-osc ring parse-time iso8601 time-date
format-spec ansi-color tramp-loaddefs super-save rmail rfc6068 rfc2047
rfc2045 ietf-drums mm-util mail-prsvr mail-utils image-file
image-converter cl-extra help-mode
lockywolf-handy-own-functions-keybindings lockywolf-basic-init xt-mouse
use-package-ensure-system-package system-packages cus-edit pp cus-load
icons wid-edit use-package use-package-ensure use-package-delight
use-package-diminish use-package-bind-key bind-key easy-mmode
use-package-core init-custom finder-inf 0blayout-autoloads
auctex-latexmk-autoloads auth-source-xoauth2-autoloads
bind-key-autoloads cdlatex-autoloads centered-cursor-mode-autoloads
chatgpt-shell-autoloads cmake-font-lock-autoloads cmake-mode-autoloads
color-identifiers-mode-autoloads anaconda-mode-autoloads
auctex-autoloads tex-site company-emoji-autoloads company-math-autoloads
ac-php-core-autoloads company-quickhelp-autoloads
company-shell-autoloads company-autoloads consult-eglot-autoloads
consult-autoloads csv-mode-autoloads debpaste-autoloads
diminish-autoloads djvu-autoloads ebib-autoloads elisp-depmap-autoloads
emms-info-mediainfo-autoloads emms-autoloads ess-autoloads
exwm-x-autoloads exwm-autoloads flycheck-ocaml-autoloads
flycheck-phpstan-autoloads flymake-easy-autoloads frecentf-autoloads
frecency-autoloads a-autoloads geiser-chez-autoloads
geiser-chibi-autoloads geiser-mit-autoloads geiser-racket-autoloads
geiser-stklos-autoloads geiser-autoloads flycheck-autoloads
gitlab-pipeline-autoloads ghub-autoloads go-mode-autoloads
graphviz-dot-mode-autoloads haskell-mode-autoloads
highlight-doxygen-autoloads highlight-escape-sequences-autoloads
highlight-indent-guides-autoloads highlight-parentheses-autoloads
hy-mode-autoloads i3wm-autoloads i3wm-config-mode-autoloads
imenu-list-autoloads info-colors-autoloads ivy-bibtex-autoloads
ivy-autoloads jabber-autoloads fsm-autoloads jupyter-autoloads
khardel-autoloads kotlin-mode-autoloads languagetool-autoloads
lua-mode-autoloads magit-todos-autoloads hl-todo-autoloads
markdown-preview-mode-autoloads markdown-mode-autoloads
math-symbol-lists-autoloads matlab-mode-autoloads merlin-autoloads
mermaid-mode-autoloads mermaid-ts-mode-autoloads
message-view-patch-autoloads magit-autoloads pcase git-commit-autoloads
mic-paren-autoloads mu4e-conversation-autoloads
mu4e-jump-to-list-autoloads nginx-mode-autoloads ob-hy-autoloads
ob-mermaid-autoloads ocaml-ts-mode-autoloads org-bib-mode-autoloads
org-contrib-autoloads org-download-autoloads org-imenu-autoloads
org-journal-autoloads org-mru-clock-autoloads org-pdftools-autoloads
org-noter-autoloads org-ref-autoloads citeproc-autoloads
bibtex-completion-autoloads biblio-autoloads biblio-core-autoloads
org-roam-autoloads magit-section-autoloads emacsql-autoloads
org-sidebar-autoloads org-ql-autoloads org-sticky-header-autoloads
org-super-agenda-autoloads org-xlatex-autoloads org2blog-autoloads
metaweblog-autoloads ov-autoloads ox-pandoc-autoloads paredit-autoloads
parsebib-autoloads pcre2el-autoloads pcsv-autoloads
pdf-drop-mode-autoloads pdf-view-pagemark-autoloads pdf-tools-autoloads
peg-autoloads persist-autoloads phpstan-autoloads php-mode-autoloads
pomm-autoloads alert-autoloads log4e-autoloads gntp-autoloads
pos-tip-autoloads pythonic-autoloads f-autoloads qml-mode-autoloads
qt-pro-mode-autoloads queue-autoloads rainbow-mode-autoloads
semi-autoloads flim-autoloads apel-autoloads shell-maker-autoloads
sml-mode-autoloads smog-autoloads spell-fu-autoloads
sr-speedbar-autoloads srv-autoloads string-inflection-autoloads
sudo-edit-autoloads tablist-autoloads telega-autoloads
rainbow-identifiers-autoloads transient-autoloads treemacs-autoloads
cfrs-autoloads posframe-autoloads ht-autoloads hydra-autoloads
pfuture-autoloads ace-window-autoloads avy-autoloads treepy-autoloads
ts-autoloads dash-autoloads tuareg-autoloads rx caml-autoloads cc-styles
cc-align cc-engine cc-vars cc-defs vdirel-autoloads helm-autoloads
popup-autoloads helm-core-autoloads async-autoloads org-vcard-autoloads
visual-fill-column-autoloads websocket-autoloads with-editor-autoloads
info compat-autoloads writegood-mode-autoloads xml-rpc-autoloads
yaml-mode-autoloads s-autoloads zmq-autoloads package browse-url url
url-proxy url-privacy url-expand url-methods url-history url-cookie
generate-lisp-file url-domsuf url-util mailcap url-handlers url-parse
auth-source cl-seq eieio eieio-core cl-macs password-cache json subr-x
map byte-opt gv bytecomp byte-compile url-vars cl-loaddefs cl-lib rmc
iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook
vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win
term/common-win x-dnd touch-screen tool-bar dnd fontset image regexp-opt
fringe tabulated-list replace newcomment text-mode lisp-mode prog-mode
register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select
scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors
frame minibuffer nadvice seq simple cl-generic indonesian philippine
cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese composite emoji-zwj charscript
charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure
cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp
files window text-properties overlay sha1 md5 base64 format env
code-pages mule custom widget keymap hashtable-print-readable backquote
threads xwidget-internal dbusbind inotify lcms2 dynamic-setting
font-render-setting cairo gtk x-toolkit xinput2 x multi-tty move-toolbar
make-network-process native-compile emacs)

Memory information:
((conses 16 1523764 420437) (symbols 48 99499 0) (strings 32 382852 18970)
 (string-bytes 1 12879328) (vectors 16 147918) (vector-slots 8 3842385 201399)
 (floats 8 1392 9690) (intervals 56 11091 4667) (buffers 992 41))

-- 
Your sincerely,
Vladimir Nikishkin (MiEr, lockywolf)
(Laptop)
diff --git a/lisp/recentf.el b/lisp/recentf.el
index 94ae871763b..b9272cb672e 100644
--- a/lisp/recentf.el
+++ b/lisp/recentf.el
@@ -319,6 +319,11 @@ recentf-show-file-shortcuts-flag
 used as shortcuts to open the Nth file."
   :group 'recentf
   :type 'boolean)
+
+(defcustom recentf-verbose t
+  "Non-nil means to show debugging messages related to the recentf machinery."
+  :group 'recentf
+  :type 'boolean)
 
 ;;; Utilities
 ;;
@@ -1324,7 +1329,10 @@ recentf-save-list
                 (format ";; coding: %s\n" recentf-save-file-coding-system)
                 ";; End:\n")
         (write-region (point-min) (point-max)
-                      (expand-file-name recentf-save-file))
+                      (expand-file-name recentf-save-file)
+                      nil
+                      recentf-verbose
+                      )
         (when recentf-save-file-modes
           (set-file-modes recentf-save-file recentf-save-file-modes))
         nil)