emacs-diffs
[Top][All Lists]
Advanced

[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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]