summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/emacs/ChangeLog5
-rw-r--r--doc/emacs/custom.texi10
-rw-r--r--etc/ChangeLog6
-rw-r--r--etc/NEWS3
-rw-r--r--etc/TODO6
-rw-r--r--lisp/ChangeLog6
-rw-r--r--lisp/cus-edit.el29
7 files changed, 53 insertions, 12 deletions
diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog
index 3ed8c1309bd..cd46d9fc474 100644
--- a/doc/emacs/ChangeLog
+++ b/doc/emacs/ChangeLog
@@ -1,3 +1,8 @@
+2014-12-14 Cameron Desautels <camdez@gmail.com>
+
+ * custom.texi (Saving Customizations): Mention
+ `custom-prompt-customize-unsaved-options'.
+
2014-12-08 Lars Magne Ingebrigtsen <larsi@gnus.org>
* misc.texi (Network Security): Mention the new protocol-level
diff --git a/doc/emacs/custom.texi b/doc/emacs/custom.texi
index 0d0013f5ace..6c392cbc70d 100644
--- a/doc/emacs/custom.texi
+++ b/doc/emacs/custom.texi
@@ -405,6 +405,16 @@ customizations in your initialization file. This is because saving
customizations from such a session would wipe out all the other
customizations you might have on your initialization file.
+ Please note that any customizations you have not chosen to save for
+future sessions will be lost when you terminate Emacs. If you'd like
+to be prompted about unsaved customizations at termination time, add
+the following to your initialization file:
+
+@example
+(add-hook 'kill-emacs-query-functions
+ 'custom-prompt-customize-unsaved-options)
+@end example
+
@node Face Customization
@subsection Customizing Faces
@cindex customizing faces
diff --git a/etc/ChangeLog b/etc/ChangeLog
index 0a22f9f20bd..f344e2437b0 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,9 @@
+2014-12-14 Cameron Desautels <camdez@gmail.com>
+
+ * NEWS: Mention `custom-prompt-customize-unsaved-options'.
+
+ * TODO: Remove its entry.
+
2014-12-13 Paul Eggert <eggert@cs.ucla.edu>
Convert Czech and Slovakian refcards to UTF-8
diff --git a/etc/NEWS b/etc/NEWS
index 01c8431ea00..37cb4b42e52 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -54,6 +54,9 @@ so if you want to use it, you can always take a copy from an older Emacs.
* Changes in Emacs 25.1
+** New function `custom-prompt-customize-unsaved-options' checks for
+unsaved customizations and prompts user to customize (if found).
+
+++
** Network security (TLS/SSL certificate validity and the like) is
added via the new Network Security Manager (NSM) and controlled via
diff --git a/etc/TODO b/etc/TODO
index ccd00e51218..cbb23944ded 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 75e84765320..f97a887b821 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,9 @@
+2014-12-14 Cameron Desautels <camdez@gmail.com>
+
+ * cus-edit.el (custom-prompt-customize-unsaved-options): Add a
+ mechanism for prompting user about unsaved customizations.
+ (Bug#19328)
+
2014-12-14 Dmitry Gutov <dgutov@yandex.ru>
* fringe.el (fringe-bitmap-p): Fix 2014-12-05 breakage.
diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el
index c8e9b90437d..a6da50e13ae 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