GNU bug report logs -
#19328
[PATCH] Add mechanism to prompt about unsaved customizations
Previous Next
Reported by: Cameron Desautels <camdez <at> gmail.com>
Date: Tue, 9 Dec 2014 15:47:01 UTC
Severity: wishlist
Tags: fixed, patch
Done: Lars Ingebrigtsen <larsi <at> gnus.org>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
> Got it. Thank you for the clarification, I think I see where our
> thinking has diverged: `customize-unsaved' is the existing mechanism
> to pop up a customize buffer displaying unsaved customization
> options. I've put a thin layer around this which provides a yes / no
> prompt to the user before (conditionally) invoking `customized-unsaved'.
> This is in the general spirit of hooks that run when killing Emacs
> ("Modified buffers exist", "Active processes exist", etc.).
>
> > If you want a named function and no error handling, then, well,
> > try `customize-unsaved'.
>
> `customize-unsaved' is not suitable for use in
> `kill-emacs-query-functions` because it signals an error if nothing
> has been customized, meaning that it will block the user from
> quitting Emacs if there are no unsaved customizations, and it will
> invoke the customization mechanism there are any. Ergo, they can
> never quit. (Drew: I'm sure you're aware of this given the way you've
> wrapped the call to `customize-unsaved', but I'm spelling it out
> for the benefit of others.)
>
> That said, the lambda you've added to `kill-emacs-query-functions'
> doesn't function properly either (at least not on my machine). It
> returns `t' in the no-unsaved-customizations case (after catching
> the error thrown my `customize-unsaved'), and it returns a (truthy)
> string, courtesy of `customize-unsaved', in the
> have-unsaved-custoizations case. Truthy values returned by the
> functions in `kill-emacs-query-functions' mean "continue with
> quitting Emacs", ergo the user is never prompted about unsaved
> customizations.
>
> Of course you can fix this easily by making sure to return nil in
> the happy path, but you're working up to exactly what my patch does...
>
> The one behavioral difference between the two is how we prompt: in
> the patched version the user is prompted in the minibuffer: "Some
> customized options have not been saved; Examine?", and shown a
> customization buffer only if they say yes.
>
> In yours, the customization buffer is automatically shown, without
> explanation, and attempts to quit the editor will continue to fail
> until the user finds either the `Revert...` or the `Apply and Save`
> button.
>
> I believe the patched version is a superior user experience. Have I
> managed to convince you? :)
OK. In fact, I use `cus-edit+.el', which redefines `customize-unsaved'
so that it DTRT. I offered this to Emacs Dev long ago, but no interest.
Perhaps you will have better luck. ;-)
FWIW, These are the changes I made to `customize-unsaved':
;; 1. By default, ignores preferences in `customize-customized-ignore'.
;; 2. Added prefix arg to override `customize-customized-ignore'.
;; 3. When not interactive and there are changes, ask for confirmation.
;; 4. Always returns `t', so it can be used as a
;; `kill-emacs-query-functions' hook.
;; 5. Wrap in `condition-case' and reissue error.
The code is here, in case you are interested:
http://www.emacswiki.org/emacs-en/download/cus-edit%2b.el
And here is some info about it:
http://www.emacswiki.org/CustomizingAndSaving#CustomizePlus
HTH.
This bug report was last modified 9 years and 95 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.