branch: externals/dape
commit 3e15266d78caa72acfeed631e6099c7cef4ca10e
Author: Daniel Pettersson <[email protected]>
Commit: Daniel Pettersson <[email protected]>

    Remove function symbols from config options diff
---
 dape.el | 37 ++++++++++++++++++++++---------------
 1 file changed, 22 insertions(+), 15 deletions(-)

diff --git a/dape.el b/dape.el
index 4616c7a264..cb264d0e58 100644
--- a/dape.el
+++ b/dape.el
@@ -2107,20 +2107,26 @@ Empty input will rerun last command.\n\n\n"
 
 (defvar dape-history nil)
 
-(defun dape--config-eval (config)
-  (cl-labels ((eval-value (value)
-                (cond
-                 ((functionp value) (funcall-interactively value))
-                 ((plistp value) (dape--config-eval value))
-                 ((vectorp value) (cl-map 'vector #'eval-value value))
-                 ((and (symbolp value)
-                       (not (eq (symbol-value value) value)))
-                  (funcall #'eval-value (symbol-value value)))
-                 (t value))))
-    (cl-loop for (key value) on config by 'cddr
-             append (cond
-                     ((memq key '(modes)) (list key value))
-                     (t (list key (funcall #'eval-value value)))))))
+(defun dape--config-eval-value (value &optional skip-function)
+  (cond
+   ((functionp value) (or (and skip-function value)
+                          (funcall-interactively value)))
+   ((plistp value) (dape--config-eval value skip-function))
+   ((vectorp value) (cl-map 'vector
+                            (lambda (v)
+                              (dape--config-eval-value v skip-function)
+                              value)))
+   ((and (symbolp value)
+         (not (eq (symbol-value value) value)))
+    (dape--config-eval-value (symbol-value value) skip-function))
+   (t value)))
+
+(defun dape--config-eval (config &optional skip-functions)
+  (cl-loop for (key value) on config by 'cddr
+           append (cond
+                   ((memq key '(modes)) (list key value))
+                   (t (list key (dape--config-eval-value value
+                                                         skip-functions))))))
 
 (defun dape--config-from-string (str)
   (let (name read-config base-config)
@@ -2139,7 +2145,8 @@ Empty input will rerun last command.\n\n\n"
 
 (defun dape--config-diff (pre-eval post-eval)
   (cl-loop for (key value) on post-eval by 'cddr
-           unless (equal (plist-get pre-eval key) value)
+           unless (equal (dape--config-eval-value (plist-get pre-eval key) t)
+                         value)
            append (list key value)))
 
 (defun dape--config-to-string (name pre-eval-config post-eval-config)

Reply via email to