emacs-diffs
[Top][All Lists]
Advanced

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

master 2500ab0894: Make `C' in over tramp work in archive mode


From: Lars Ingebrigtsen
Subject: master 2500ab0894: Make `C' in over tramp work in archive mode
Date: Sun, 17 Jul 2022 06:13:04 -0400 (EDT)

branch: master
commit 2500ab089423df818557c5e9426e334dfbec0dbf
Author: Lars Ingebrigtsen <larsi@gnus.org>
Commit: Lars Ingebrigtsen <larsi@gnus.org>

    Make `C' in over tramp work in archive mode
    
    * lisp/arc-mode.el (archive-copy-file): Make `C' in over tramp
    work (bug#56574).
---
 lisp/arc-mode.el | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/lisp/arc-mode.el b/lisp/arc-mode.el
index dbb8c20209..632ae57852 100644
--- a/lisp/arc-mode.el
+++ b/lisp/arc-mode.el
@@ -1087,11 +1087,17 @@ NEW-NAME."
         (let* ((descr (archive-get-descr))
                (archive (buffer-file-name))
                (extractor (archive-name "extract"))
-               (ename (archive--file-desc-ext-file-name descr)))
-          (with-temp-buffer
-            (set-buffer-multibyte nil)
-            (archive--extract-file extractor archive ename)
-            (write-region (point-min) (point-max) write-to)))))))
+               (ename (archive--file-desc-ext-file-name descr))
+               ;; If the archive is remote, we have to copy it to a
+               ;; local file first to make extraction work.
+               (copy (archive-maybe-copy archive)))
+          (unwind-protect
+              (with-temp-buffer
+                (set-buffer-multibyte nil)
+                (archive--extract-file extractor copy ename)
+                (write-region (point-min) (point-max) write-to))
+            (unless (equal copy archive)
+              (delete-file copy))))))))
 
 (defun archive-extract (&optional other-window-p event)
   "In archive mode, extract this entry of the archive into its own buffer."



reply via email to

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