aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMauro Aranda2020-08-14 16:40:40 +0200
committerLars Ingebrigtsen2020-08-14 16:40:40 +0200
commit5c39f6f1165a33f5714eedd3a413f786dffbb5a2 (patch)
tree72fbfab0082764460f3f40a46655c7bba42f06ff
parent93136b980ade2bdd1053128ce103c7ac53a2ad0e (diff)
downloademacs-5c39f6f1165a33f5714eedd3a413f786dffbb5a2.tar.gz
emacs-5c39f6f1165a33f5714eedd3a413f786dffbb5a2.zip
Make sure we only act on edited widgets in Custom-save
* lisp/cus-edit.el (Custom-save): Only act on edited widgets in the buffer. If we attempt to redraw all widgets, we confuse custom-variable-modified-p, or we end up drawing State buttons for all options, including the hidden ones (bug#42801).
-rw-r--r--lisp/cus-edit.el23
1 files changed, 13 insertions, 10 deletions
diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el
index 5ec5799f805..23ceb3a857a 100644
--- a/lisp/cus-edit.el
+++ b/lisp/cus-edit.el
@@ -801,16 +801,19 @@ has been executed, nil otherwise."
801If a setting was edited and set before, this saves it. If a 801If a setting was edited and set before, this saves it. If a
802setting was merely edited before, this sets it then saves it." 802setting was merely edited before, this sets it then saves it."
803 (interactive) 803 (interactive)
804 (when (custom-command-apply 804 (let (edited-widgets)
805 (lambda (child) 805 (when (custom-command-apply
806 (when (memq (widget-get child :custom-state) 806 (lambda (child)
807 '(modified set changed rogue)) 807 (when (memq (widget-get child :custom-state)
808 (widget-apply child :custom-mark-to-save))) 808 '(modified set changed rogue))
809 "Save all settings in this buffer? " t) 809 (push child edited-widgets)
810 ;; Save changes to buffer and redraw. 810 (widget-apply child :custom-mark-to-save)))
811 (custom-save-all) 811 "Save all settings in this buffer? " t)
812 (dolist (child custom-options) 812 ;; Save changes to buffer.
813 (widget-apply child :custom-state-set-and-redraw)))) 813 (custom-save-all)
814 ;; Redraw and recalculate the state when necessary.
815 (dolist (widget edited-widgets)
816 (widget-apply widget :custom-state-set-and-redraw)))))
814 817
815(defun custom-reset (_widget &optional event) 818(defun custom-reset (_widget &optional event)
816 "Select item from reset menu." 819 "Select item from reset menu."