Function: dape--source-ensure

dape--source-ensure is a natively compiled function defined in dape.el.

Signature

(dape--source-ensure CONN PLIST CB)

Documentation

Ensure that source object in PLIST exist for adapter CONN.

See dape-request for expected CB signature.

Source Code

;; Defined in /nix/store/1fiaif8pifqj2jh65rbg3fkhg3i56q42-emacs-packages-deps/share/emacs/site-lisp/elpa/dape-0.27.1/dape.el
(defun dape--source-ensure (conn plist cb)
  "Ensure that source object in PLIST exist for adapter CONN.
See `dape-request' for expected CB signature."
  (let* ((source (plist-get plist :source))
         (filename (plist-get source :path))
         (reference (plist-get source :sourceReference))
         (buffer (plist-get (dape--source-buffers (dape--root-of conn))
                            reference)))
    (cond
     ((or (and (stringp filename)
               (file-exists-p (dape--file-name-local conn filename)))
          (and (buffer-live-p buffer)))
      (dape--request-continue cb))
     ((and (numberp reference)
           (< 0 reference))
      (dape--with-request-bind
          ((&key content mimeType &allow-other-keys) error)
          (dape-request conn :source
                        (list :source source :sourceReference reference))
        (cond (error
               (dape--warn "%s" error))
              (content
               (dape--source-make-buffer conn (plist-get source :name)
                                         reference content mimeType)
               (dape--request-continue cb))))))))