]> git.eshelyaron.com Git - emacs.git/commitdiff
Protect non-selected face spec components in custimize-face. Fixes bug #40866
authorAlan Mackenzie <acm@muc.de>
Fri, 1 May 2020 12:23:15 +0000 (12:23 +0000)
committerAlan Mackenzie <acm@muc.de>
Fri, 1 May 2020 12:23:15 +0000 (12:23 +0000)
* 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.

lisp/cus-edit.el

index d3d17fda7adabfad21045ae72a678703215528b1..1ec27085506d26b77993b9ca61b9314e9e116cfd 100644 (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))