[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master bcb5bdc2e9a: Pass original spec just after creating the face-widg
|
From: |
Eli Zaretskii |
|
Subject: |
master bcb5bdc2e9a: Pass original spec just after creating the face-widget |
|
Date: |
Thu, 20 Jul 2023 11:44:53 -0400 (EDT) |
branch: master
commit bcb5bdc2e9abd58b8e946109a319986daec66ace
Author: Mauro Aranda <maurooaranda@gmail.com>
Commit: Eli Zaretskii <eliz@gnu.org>
Pass original spec just after creating the face-widget
* lisp/cus-edit.el (custom-face-get-current-spec-unfiltered):
New function, extracted from custom-face-get-current-spec.
(custom-face-get-current-spec): Use it.
(custom-face-state-set): Take an optional argument, to decide
if we should check against a filtered or unfiltered spec.
(custom-face-value-create): Use the new optional argument.
(Bug#64347)
---
lisp/cus-edit.el | 26 ++++++++++++++++++--------
1 file changed, 18 insertions(+), 8 deletions(-)
diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el
index 4fca5761c17..4934694be14 100644
--- a/lisp/cus-edit.el
+++ b/lisp/cus-edit.el
@@ -3721,7 +3721,8 @@ WIDGET should be a `custom-face' widget."
`((t ,(widget-value child)))
(widget-value child)))))
-(defun custom-face-get-current-spec (face)
+(defun custom-face-get-current-spec-unfiltered (face)
+ "Return the current spec for face FACE, without filtering it."
(let ((spec (or (get face 'customized-face)
(get face 'saved-face)
(get face 'face-defface-spec)
@@ -3732,7 +3733,11 @@ WIDGET should be a `custom-face' widget."
;; edit it as the user has specified it.
(if (not (face-spec-match-p face spec (selected-frame)))
(setq spec `((t ,(face-attr-construct face (selected-frame))))))
- (custom-pre-filter-face-spec spec)))
+ spec))
+
+(defun custom-face-get-current-spec (face)
+ "Return the current spec for face FACE, filtering it."
+ (custom-pre-filter-face-spec (custom-face-get-current-spec-unfiltered face)))
(defun custom-toggle-hide-face (visibility-widget &rest _ignore)
"Toggle the visibility of a `custom-face' parent widget.
@@ -3852,8 +3857,8 @@ the present value is saved to its :shown-value property
instead."
(unless (widget-get widget :custom-form)
(widget-put widget :custom-form custom-face-default-form))
- (let* ((spec (or (widget-get widget :shown-value)
- (custom-face-get-current-spec symbol)))
+ (let* ((shown-value (widget-get widget :shown-value))
+ (spec (or shown-value (custom-face-get-current-spec symbol)))
(form (widget-get widget :custom-form))
(indent (widget-get widget :indent))
face-alist face-entry spec-default spec-match editor)
@@ -3894,7 +3899,7 @@ the present value is saved to its :shown-value property
instead."
widget 'sexp :value spec))))
(push editor children)
(widget-put widget :children children)
- (custom-face-state-set widget))))))
+ (custom-face-state-set widget (not shown-value)))))))
(defun cus--face-link (widget _format)
(widget-create-child-and-convert
@@ -4014,13 +4019,18 @@ This is one of `set', `saved', `changed', `themed', or
`rogue'."
'changed
state)))
-(defun custom-face-state-set (widget)
+(defun custom-face-state-set (widget &optional no-filter)
"Set the state of WIDGET, a custom-face widget.
If the user edited the widget, set the state to modified. If not, the new
-state is one of the return values of `custom-face-state'."
+state is one of the return values of `custom-face-state'.
+Optional argument NO-FILTER means to check against an unfiltered spec."
(let ((face (widget-value widget)))
(widget-put widget :custom-state
- (if (face-spec-match-p face (custom-face-widget-to-spec
widget))
+ (if (face-spec-match-p
+ face
+ (if no-filter
+ (custom-face-get-current-spec-unfiltered face)
+ (custom-face-widget-to-spec widget)))
(custom-face-state face)
'modified))))
| [Prev in Thread] |
Current Thread |
[Next in Thread] |
- master bcb5bdc2e9a: Pass original spec just after creating the face-widget,
Eli Zaretskii <=