emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/hyperdrive 36fe73727c 03/31: Fix: (h/handler-default) Fill


From: ELPA Syncer
Subject: [nongnu] elpa/hyperdrive 36fe73727c 03/31: Fix: (h/handler-default) Fill disk-usage from GET request
Date: Wed, 12 Jun 2024 19:00:39 -0400 (EDT)

branch: elpa/hyperdrive
commit 36fe73727cc2d1a08982eac6435de9419628bc9c
Author: Joseph Turner <joseph@ushin.org>
Commit: Joseph Turner <joseph@ushin.org>

    Fix: (h/handler-default) Fill disk-usage from GET request
    
    It's necessary to fill hyperdrive disk-usage after files have been
    loaded from the network so that the disk usage reflects the newly
    loaded data.
---
 hyperdrive-lib.el | 72 ++++++++++++++++++++++++++++---------------------------
 1 file changed, 37 insertions(+), 35 deletions(-)

diff --git a/hyperdrive-lib.el b/hyperdrive-lib.el
index c325219fcf..56d78543a9 100644
--- a/hyperdrive-lib.el
+++ b/hyperdrive-lib.el
@@ -1349,41 +1349,43 @@ Otherwise, return nil.  SLOT may be one of
 (cl-defun h/handler-default (entry &key then)
   "Load ENTRY's file into an Emacs buffer.
 If then, then call THEN with no arguments.  Default handler."
-  (h/api 'get (he/url entry)
-    :noquery t
-    :as (lambda ()
-          (pcase-let*
-              (((cl-struct hyperdrive-entry hyperdrive version etc) entry)
-               ((map target) etc)
-               (response-buffer (current-buffer)))
-            (with-current-buffer (h//get-buffer-create entry)
-              ;; TODO: Don't reload if we're jumping to a link on the
-              ;; same page (but ensure that reverting still works).
-              (if (buffer-modified-p)
-                  (h/message "Buffer modified: %S" (current-buffer))
-                (save-excursion
-                  (with-silent-modifications
-                    (erase-buffer)
-                    (insert-buffer-substring response-buffer))
-                  (setf buffer-undo-list nil)
-                  (setf buffer-read-only
-                        (or (not (h/writablep hyperdrive)) version))
-                  (set-buffer-modified-p nil)
-                  (set-visited-file-modtime (current-time))))
-              (when (map-elt (hyperdrive-etc hyperdrive) 'safep)
-                (let ((buffer-file-name (he/name entry)))
-                  (set-auto-mode)))
-              (when target
-                (pcase major-mode
-                  ('org-mode
-                   (require 'hyperdrive-org)
-                   (h/org--link-goto target))
-                  ('markdown-mode
-                   ;; TODO: Handle markdown link
-                   )))
-              (h/blob-mode (if version +1 -1))
-              (when then
-                (funcall then)))))))
+  (pcase-let*
+      (((cl-struct plz-response headers body)
+        ;; TODO: Handle errors
+        ;; TODO: When plz adds :as 'response-with-buffer, use that.
+        (h/api 'get (he/url entry) :noquery t :as 'response))
+       ;; Filling entry is necessary in order to update hyperdrive disk-usage.
+       (_ (h//fill entry headers))
+       ((cl-struct hyperdrive-entry hyperdrive version etc) entry)
+       ((map target) etc))
+    (with-current-buffer (h//get-buffer-create entry)
+      ;; TODO: Don't reload if we're jumping to a link on the
+      ;; same page (but ensure that reverting still works).
+      (if (buffer-modified-p)
+          (h/message "Buffer modified: %S" (current-buffer))
+        (save-excursion
+          (with-silent-modifications
+            (erase-buffer)
+            (insert body))
+          (setf buffer-undo-list nil)
+          (setf buffer-read-only
+                (or (not (h/writablep hyperdrive)) version))
+          (set-buffer-modified-p nil)
+          (set-visited-file-modtime (current-time))))
+      (when (map-elt (hyperdrive-etc hyperdrive) 'safep)
+        (let ((buffer-file-name (he/name entry)))
+          (set-auto-mode)))
+      (when target
+        (pcase major-mode
+          ('org-mode
+           (require 'hyperdrive-org)
+           (h/org--link-goto target))
+          ('markdown-mode
+           ;; TODO: Handle markdown link
+           )))
+      (h/blob-mode (if version +1 -1))
+      (when then
+        (funcall then)))))
 
 (cl-defun h/handler-streamable (entry &key _then)
   ;; TODO: Is there any reason to not pass THEN through?



reply via email to

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