Ok you are right, the problem seems to be somewhere in Tramp on require that sets the saved-value symbol property of connection-local-profile-alist and connection-local-criteria-alist without them being written to file, even when enable-connection-local-variables is set to nil. When custom-save-all naively scans the obarray for symbols, sees these variables having saved-value set without going through the customize machinary, it assumes they are saved to a file and saves them again. On 4 Jun 2023 at 3:25 PM +0100, Eli Zaretskii , wrote: > > Date: Sun, 4 Jun 2023 15:00:01 +0100 > > From: Jimmy Wong > > Cc: 63891@debbugs.gnu.org > > > > This branch: https://github.com/emacs-mirror/emacs/blob/emacs-29/lisp/cus-edit.el#L1109 > > I don't know what that is. I'm using the Emacs Git repository, the > emacs-29 branch. > > > No it does not saves only one variable to file, it only saves one variable to file if you have only modified > > one variable. > > That's not what I see. I've modified several options using the > menu-bar's Options menu, then typed > > M-x customize-save-variable RET truncate-lines RET y > > and saw that only truncate-lines was written to the custom file. > > If you see something else, please show a complete recipe that > reproduces the behavior you see. > > > As a matter of fact, custom-variable-save, custom-variable-mark-to-reset-standard, > > custom-face-save, custom-face-mark-to-reset-standard and custom-group-save all have the same > > problem. They all call custom-save-all and they all dump all modified customizable variable values on > > file without regard to whether it’s a single variable, face or a group the user asked Emacs to save. > > I wasn't talking about custom-save-all -- that indeed saves all the > options customized in this session. I was talking about > customize-save-variable, which prompts for a single variable and its > value, and saves only that single variable, at least in my testing.