Function: dape--memory-revert
dape--memory-revert is a natively compiled function defined in
dape.el.
Signature
(dape--memory-revert &optional IGNORE-AUTO NOCONFIRM PRESERVE-MODES)
Documentation
Revert buffer function for dape-memory-mode.
Source Code
;; Defined in /nix/store/1fiaif8pifqj2jh65rbg3fkhg3i56q42-emacs-packages-deps/share/emacs/site-lisp/elpa/dape-0.27.1/dape.el
(defun dape--memory-revert (&optional _ignore-auto _noconfirm _preserve-modes)
"Revert buffer function for `dape-memory-mode'."
(let* ((conn (dape--live-connection 'last))
(write-capable-p (dape--capable-p conn :supportsWriteMemoryRequest)))
(unless (dape--capable-p conn :supportsReadMemoryRequest)
(user-error "Adapter not capable of reading memory"))
(unless dape--memory-address
(user-error "`dape--memory-address' not set"))
(dape--with-request-bind
((&key address data &allow-other-keys) error)
(dape-request conn :readMemory
(list :memoryReference dape--memory-address
:count dape-memory-page-size))
(cond
(error (message "Failed to read memory: %s" error))
((not data) (message "No bytes returned from adapter"))
(t
(setq dape--memory-address address
hexl-max-address (1- dape-memory-page-size)
buffer-undo-list nil)
(let ((address (dape--memory-address-number))
(temp-buffer (generate-new-buffer " *temp*" t))
(buffer-empty-p (zerop (buffer-size))))
(with-current-buffer temp-buffer
(insert (base64-decode-string data))
(let (buffer-undo-list)
(hexlify-buffer))
;; Now we need to apply offset to the addresses, ughh
(goto-char (point-min))
(while (re-search-forward "^[0-9a-f]+" nil t)
(let ((address
(thread-last (string-to-number (match-string 0) 16)
(+ address)
(format "%08x"))))
(delete-region (match-beginning 0) (match-end 0))
;; `hexl' does not support address over 8 hex chars
(insert (append (substring address (- (length address) 8)))))))
(replace-region-contents (point-min) (point-max) (lambda () temp-buffer))
(when buffer-empty-p (hexl-goto-address 0))
(kill-buffer temp-buffer))
(set-buffer-modified-p nil)
(when write-capable-p
(add-hook 'write-contents-functions #'dape--memory-write)))))))