[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master e3d8f4b 1/2: Fix modification check when custom-form is `lisp'
From: |
Lars Ingebrigtsen |
Subject: |
master e3d8f4b 1/2: Fix modification check when custom-form is `lisp' |
Date: |
Fri, 27 Nov 2020 03:24:02 -0500 (EST) |
branch: master
commit e3d8f4b98f19f4e8d194f1ae9a91065b80e01a0f
Author: Dario Gjorgjevski <dario.gjorgjevski@gmail.com>
Commit: Lars Ingebrigtsen <larsi@gnus.org>
Fix modification check when custom-form is `lisp'
* lisp/cus-edit.el (custom-variable-modified-p): Quote the value when
custom form is 'lisp (or 'mismatch) prior to comparing in order to
accommodate `custom-variable-value-create' (bug#44852).
---
lisp/cus-edit.el | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el
index cb68bae..a00cb17 100644
--- a/lisp/cus-edit.el
+++ b/lisp/cus-edit.el
@@ -2900,14 +2900,20 @@ Modified means that the widget that holds the value has
been edited by the user
in a customize buffer.
To check for other states, call `custom-variable-state'."
(catch 'get-error
- (let* ((symbol (widget-get widget :value))
+ (let* ((form (widget-get widget :custom-form))
+ (symbol (widget-get widget :value))
(get (or (get symbol 'custom-get) 'default-value))
(value (if (default-boundp symbol)
(condition-case nil
(funcall get symbol)
(error (throw 'get-error t)))
- (symbol-value symbol))))
- (not (equal value (widget-value (car (widget-get widget :children))))))))
+ (symbol-value symbol)))
+ (orig-value (widget-value (car (widget-get widget :children)))))
+ (not (equal (if (memq form '(lisp mismatch))
+ ;; Mimic `custom-variable-value-create'.
+ (custom-quote value)
+ value)
+ orig-value)))))
(defun custom-variable-state-set (widget &optional state)
"Set the state of WIDGET to STATE.