Protect non-selected face spec components in custimize-face. Fixes bug #40866

* lisp/cus-edit.el (custom-face-save): If the current face widget is only
displaying part of the face spec, temporarily set it to "display" the whole
spec around the call to custom-face-mark-to-save.
This commit is contained in:
Alan Mackenzie 2020-05-01 12:23:15 +00:00
parent 43fded12d5
commit a4c07bc8c8

View file

@ -3824,7 +3824,17 @@ Optional EVENT is the location for the menu."
(defun custom-face-save (widget)
"Save the face edited by WIDGET."
(custom-face-mark-to-save widget)
(let ((form (widget-get widget :custom-form)))
(if (memq form '(all lisp))
(custom-face-mark-to-save widget)
;; The user is working on only a selected terminal type;
;; make sure we save the entire spec to `custom-file'. (Bug #40866)
(custom-face-edit-all widget)
(custom-face-mark-to-save widget)
(if (eq form 'selected)
(custom-face-edit-selected widget)
;; `form' is edit or mismatch; can't happen.
(widget-put widget :custom-form form))))
(custom-save-all)
(custom-face-state-set-and-redraw widget))