branch: elpa/hyperdrive
commit d66fd46f189536d6959019addf2627e5539cb894
Merge: f24c67cd3d 6b70954da9
Author: Joseph Turner <jos...@ushin.org>
Commit: Joseph Turner <jos...@ushin.org>

    Merge branch 'stable'
---
 CHANGELOG.org     |  7 +++++++
 hyperdrive-lib.el | 21 ++++++++++++++-------
 hyperdrive.el     |  7 +------
 3 files changed, 22 insertions(+), 13 deletions(-)

diff --git a/CHANGELOG.org b/CHANGELOG.org
index 1ff8788cca..b18c1d1afa 100644
--- a/CHANGELOG.org
+++ b/CHANGELOG.org
@@ -8,6 +8,13 @@
 
 Nothing yet...
 
+* 0.4.2 [2024-09-24 Tue]
+
+** Fixes
+
+- Set major mode in hyperdrive files even before it is saved.
+- Compiler warnings.  (Thanks to Jonas Bernoulli!)
+
 * 0.4.1 [2024-09-13 Fri]
 
 ** Fixes
diff --git a/hyperdrive-lib.el b/hyperdrive-lib.el
index e8426d1240..bb6017f692 100644
--- a/hyperdrive-lib.el
+++ b/hyperdrive-lib.el
@@ -731,7 +731,8 @@ echo area when the request for the file is made."
                            (h/message "Entry does not exist!  %s"
                                       (h//format-entry entry)))
                        ;; Make and switch to new buffer.
-                       (switch-to-buffer (h//get-buffer-create entry))))
+                       (switch-to-buffer (h//get-buffer-create entry))
+                       (h//set-auto-mode)))
                     (t
                      ;; Hyperdrive entry is not writable: prompt for action.
                      (not-found-action))))
@@ -1430,12 +1431,7 @@ If then, then call THEN with no arguments.  Default 
handler."
                 (or (not (h/writablep hyperdrive)) version))
           (set-buffer-modified-p nil)
           (set-visited-file-modtime (current-time))))
-      (when (eq 'unknown (h/safe-p hyperdrive))
-        (call-interactively #'h/mark-as-safe))
-      ;; Check safe-p again after potential call to `h/mark-as-safe'.
-      (when (eq t (h/safe-p hyperdrive))
-        (let ((buffer-file-name (he/name entry)))
-          (set-auto-mode t)))
+      (h//set-auto-mode)
       (when target
         (with-demoted-errors "Hyperdrive: %S"
           (pcase major-mode
@@ -1769,6 +1765,17 @@ When BUFFER is nil, act on current buffer."
       (delete-all-overlays)
       (set-text-properties (point-min) (point-max) nil))))
 
+(defun h//set-auto-mode ()
+  "Set major mode according to file extension, prompting for safety."
+  (let ((entry (h//context-entry))
+        (hyperdrive (h//context-hyperdrive)))
+    (when (eq 'unknown (h/safe-p hyperdrive))
+      (call-interactively #'h/mark-as-safe))
+    ;; Check safe-p again after potential call to `h/mark-as-safe'.
+    (when (eq t (h/safe-p hyperdrive))
+      (let ((buffer-file-name (he/name entry)))
+        (set-auto-mode t)))))
+
 (defun he/equal-p (a b &optional any-version-p)
   "Return non-nil if hyperdrive entries A and B are equal.
 Compares only public key, version, and path.  If ANY-VERSION-P,
diff --git a/hyperdrive.el b/hyperdrive.el
index 793d028ecf..9f133c9c51 100644
--- a/hyperdrive.el
+++ b/hyperdrive.el
@@ -568,12 +568,7 @@ For non-interactive use, see `hyperdrive-write'."
                 (with-current-buffer orig-buffer
                   (unless h/mode
                     (h//clean-buffer)
-                    (when (eq 'unknown (h/safe-p hyperdrive))
-                      (call-interactively #'h/mark-as-safe))
-                    ;; Check safe-p again after potential call to 
`h/mark-as-safe'.
-                    (when (eq t (h/safe-p hyperdrive))
-                      (let ((buffer-file-name (he/name entry)))
-                        (set-auto-mode t)))
+                    (h//set-auto-mode)
                     (h/mode))
                   (he//fill entry (plz-response-headers response))
                   ;; PUT responses only include ETag and Last-Modified

Reply via email to