]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix handling of `browse-url-temp-file-name'
authorMichael Albinus <michael.albinus@gmx.de>
Thu, 10 Jul 2025 15:25:56 +0000 (17:25 +0200)
committerEshel Yaron <me@eshelyaron.com>
Thu, 24 Jul 2025 08:04:22 +0000 (10:04 +0200)
* lisp/net/browse-url.el (browse-url--temp-file-setup):
Add `browse-url-delete-temp-file' to `write-file-functions'.
(browse-url-of-file, browse-url-delete-temp-file): Fix handling of
`browse-url-temp-file-name'.  (Bug#78830)

(cherry picked from commit 9f82300bb049c716d59575eaee29262e38c5e8d2)

lisp/net/browse-url.el

index 21fad0dd50c30b3e61a7763695422285b683dc28..6949ff67d9e2bb567218e4c125fb5fd289676f6e 100644 (file)
@@ -736,6 +736,7 @@ instead."
 (defmacro browse-url--temp-file-setup (&rest body)
   (declare (indent defun))
   `(progn
+     (add-hook 'write-file-functions #'browse-url-delete-temp-file nil t)
      (add-hook 'kill-buffer-hook #'browse-url-delete-temp-file nil t)
      (with-file-modes #o600
        ,@body)))
@@ -757,11 +758,11 @@ interactively.  Turn the filename into a URL with function
          (cond ((not (buffer-modified-p)))
                (browse-url-save-file (save-buffer))
                (t (message "%s modified since last save" file))))))
-  (when (and (file-remote-p file)
-             (not browse-url-temp-file-name))
+  (when (file-remote-p file)
     (browse-url--temp-file-setup
-      (setq browse-url-temp-file-name (file-local-copy file)
-            file browse-url-temp-file-name)))
+      (unless browse-url-temp-file-name
+        (setq browse-url-temp-file-name (file-local-copy file)))
+      (setq file browse-url-temp-file-name)))
   (browse-url (browse-url-file-url file))
   (run-hooks 'browse-url-of-file-hook))
 
@@ -838,7 +839,8 @@ narrowed."
   (declare (advertised-calling-convention () "31.1"))
   (let ((file-name (or temp-file-name browse-url-temp-file-name)))
     (if (and file-name (file-exists-p file-name))
-       (delete-file file-name))))
+       (delete-file file-name))
+    (unless temp-file-name (setq browse-url-temp-file-name nil))))
 
 (declare-function dired-get-filename "dired"
                  (&optional localp no-error-if-not-filep))