From: Cameron Desautels <camdez@gmail.com>
To: 19328@debbugs.gnu.org
Subject: bug#19328: [PATCH] Add mechanism to prompt about unsaved customizations
Date: Tue, 9 Dec 2014 09:46:22 -0600 [thread overview]
Message-ID: <CALtQdcmn_JGM8honCcjaZx2CgzU=LsT8f=OnfUBZZw67Nm=DHA@mail.gmail.com> (raw)
[-- Attachment #1.1: Type: text/plain, Size: 452 bytes --]
Implements the following, as requested in `etc/TODO`:
** A function to check for customizable options that have been
set but not saved, and ask the user whether to save them.
This could go in kill-emacs-query-functions, to remind people
to save their changes. If the user says yes, show them
in a Custom buffer using customize-customized.
My copyright assignment info should be on file.
Cheers.
--
Cameron Desautels <camdez@gmail.com>
[-- Attachment #1.2: Type: text/html, Size: 686 bytes --]
[-- Attachment #2: 0001-Add-mechanism-to-prompt-about-unsaved-customizations.patch --]
[-- Type: application/octet-stream, Size: 3660 bytes --]
From dd192cd7c45f3e815b5a731420c5293d74c6075a Mon Sep 17 00:00:00 2001
From: Cameron Desautels <camdez@gmail.com>
Date: Tue, 9 Dec 2014 00:28:44 -0600
Subject: [PATCH] Add mechanism to prompt about unsaved customizations
- Requested in `etc/TODO'
- Suitable for use in `kill-emacs-query-functions'.
---
etc/TODO | 6 ------
lisp/ChangeLog | 5 +++++
lisp/cus-edit.el | 29 +++++++++++++++++++++++------
3 files changed, 28 insertions(+), 12 deletions(-)
diff --git a/etc/TODO b/etc/TODO
index ccd00e5..cbb2394 100644
--- a/etc/TODO
+++ b/etc/TODO
@@ -419,12 +419,6 @@ rather than interactively. This a trivial one-liner in easy-mode.el.
** Make byte-optimization warnings issue accurate line numbers.
-** A function to check for customizable options that have been
- set but not saved, and ask the user whether to save them.
- This could go in kill-emacs-query-functions, to remind people
- to save their changes. If the user says yes, show them
- in a Custom buffer using customize-customized.
-
** Record the sxhash of the default value for customized variables
and notify the user (maybe by adding a menu item or toolbar button,
as the detection can occur during autoload time) when the default
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index bf139d6..9e4a7a7 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,8 @@
+2014-12-09 Cameron Desautels <camdez@gmail.com>
+
+ * cus-edit.el (custom-prompt-customize-unsaved-options): Add a
+ mechanism for prompting user about unsaved customizations.
+
2014-12-09 Eric S. Raymond <esr@snark.thyrsus.com>
* vc/vc-src.el (vc-src-do-comand): Prepend -- to file argument
diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el
index c8e9b90..a6da50e 100644
--- a/lisp/cus-edit.el
+++ b/lisp/cus-edit.el
@@ -1356,12 +1356,10 @@ suggest to customize that face, if it's customizable."
(or (face-at-point t t) "all faces") t)))
(customize-face face t))
-(defalias 'customize-customized 'customize-unsaved)
-
-;;;###autoload
-(defun customize-unsaved ()
- "Customize all options and faces set in this session but not saved."
- (interactive)
+(defun custom-unsaved-options ()
+ "List of options and faces set in this session but not saved.
+Each entry is of the form (SYMBOL TYPE), where TYPE is one of the
+symbols `custom-face' or `custom-variable'."
(let ((found nil))
(mapatoms (lambda (symbol)
(and (or (get symbol 'customized-face)
@@ -1372,6 +1370,15 @@ suggest to customize that face, if it's customizable."
(get symbol 'customized-variable-comment))
(boundp symbol)
(push (list symbol 'custom-variable) found))))
+ found))
+
+(defalias 'customize-customized 'customize-unsaved)
+
+;;;###autoload
+(defun customize-unsaved ()
+ "Customize all options and faces set in this session but not saved."
+ (interactive)
+ (let ((found (custom-unsaved-options)))
(if (not found)
(error "No user options are set but unsaved")
(custom-buffer-create (custom-sort-items found t nil)
@@ -1477,6 +1484,16 @@ If TYPE is `groups', include only groups."
(interactive (list (apropos-read-pattern "groups")))
(customize-apropos regexp 'groups))
+;;;###autoload
+(defun custom-prompt-customize-unsaved-options ()
+ "Prompt user to customize any unsaved customization options.
+Return non-nil if user chooses to customize, for use in
+`kill-emacs-query-functions'."
+ (not (and (custom-unsaved-options)
+ (yes-or-no-p "Some customized options have not been saved; Examine? ")
+ (customize-unsaved)
+ t)))
+
;;; Buffer.
(defcustom custom-buffer-style 'links
--
2.2.0
next reply other threads:[~2014-12-09 15:46 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-09 15:46 Cameron Desautels [this message]
2014-12-09 15:54 ` bug#19328: [PATCH] Add mechanism to prompt about unsaved customizations Drew Adams
2014-12-09 16:16 ` Cameron Desautels
2014-12-09 16:24 ` Drew Adams
2014-12-09 17:05 ` Cameron Desautels
2014-12-09 17:46 ` Drew Adams
2014-12-09 19:47 ` Cameron Desautels
2014-12-09 20:10 ` Drew Adams
2014-12-10 15:32 ` Ted Zlatanov
2014-12-12 1:04 ` Cameron Desautels
2014-12-12 1:40 ` Stefan Monnier
2014-12-12 1:56 ` Cameron Desautels
2014-12-12 2:36 ` Stefan Monnier
2014-12-12 2:39 ` Cameron Desautels
2014-12-13 1:17 ` Ted Zlatanov
2014-12-13 5:55 ` Stefan Monnier
2014-12-13 13:06 ` Ted Zlatanov
2014-12-13 23:23 ` Cameron Desautels
2014-12-14 11:54 ` Ted Zlatanov
2014-12-14 14:02 ` Stefan Monnier
2014-12-14 16:31 ` Ted Zlatanov
2016-02-23 11:36 ` Lars Ingebrigtsen
2014-12-12 2:48 ` Drew Adams
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CALtQdcmn_JGM8honCcjaZx2CgzU=LsT8f=OnfUBZZw67Nm=DHA@mail.gmail.com' \
--to=camdez@gmail.com \
--cc=19328@debbugs.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.