Subject: Re: bug#63891: 29.0.91; customize-save-variable should not save all variables if a custom file exists

From: Jimmy Wong <[email-masked]>
Date: Sun, 4 Jun 2023 17:49:31 +0100

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 <[email-masked]>, wrote:
> > Date: Sun, 4 Jun 2023 15:00:01 +0100
> > From: Jimmy Wong <[email-masked]>
> > Cc: [email-masked]
> >
> > 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.