Function: dape--config-eval-value

dape--config-eval-value is a natively compiled function defined in dape.el.

Signature

(dape--config-eval-value VALUE &optional SKIP-FUNCTIONS SKIP-INTERACTIVE)

Documentation

Return recursively evaluated VALUE.

If SKIP-FUNCTIONS is non-nil return VALUE as is if functionp is non-nil. If SKIP-INTERACTIVE is non-nil return VALUE as is if functionp is non-nil and function uses the minibuffer.

Source Code

;; Defined in /nix/store/1fiaif8pifqj2jh65rbg3fkhg3i56q42-emacs-packages-deps/share/emacs/site-lisp/elpa/dape-0.27.1/dape.el
(defun dape--config-eval-value (value &optional skip-functions skip-interactive)
  "Return recursively evaluated VALUE.
If SKIP-FUNCTIONS is non-nil return VALUE as is if `functionp' is
non-nil.
If SKIP-INTERACTIVE is non-nil return VALUE as is if `functionp' is
non-nil and function uses the minibuffer."
  (pcase value
    ;; On function (or list that starts with a non keyword symbol)
    ((or (pred functionp)
         (and `(,x . ,_) (guard (and (symbolp x) (not (keywordp x))))))
     (if skip-functions
         value
       ;; Try to eval function, signal on minibuffer
       (let ((enable-recursive-minibuffers (not skip-interactive)))
         (if (functionp value)
             (funcall-interactively value)
           (eval value t)))))
    ;; On plist recursively evaluate
    ((pred dape--plistp)
     (dape--config-eval-1 value skip-functions skip-interactive))
    ;; On vector evaluate each item
    ((pred vectorp)
     (cl-map 'vector
             (lambda (value)
               (dape--config-eval-value value skip-functions skip-interactive))
             value))
    ;; On symbol evaluate symbol value
    ((and (pred symbolp)
          ;; Guard against infinite recursion
          (guard (not (eq (symbol-value value) value))))
     (dape--config-eval-value (symbol-value value) skip-functions
                              skip-interactive))
    ;; Otherwise just value
    (_ value)))