emacs-diffs
[Top][All Lists]
Advanced

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

master aa88845: Remove Tramp's `dired-compress-file' handler, not needed


From: Michael Albinus
Subject: master aa88845: Remove Tramp's `dired-compress-file' handler, not needed anymore
Date: Sat, 13 Nov 2021 09:14:15 -0500 (EST)

branch: master
commit aa88845a170fef902fdd7d757b0f178ce41fe816
Author: Michael Albinus <michael.albinus@gmx.de>
Commit: Michael Albinus <michael.albinus@gmx.de>

    Remove Tramp's `dired-compress-file' handler, not needed anymore
    
    * lisp/dired-aux.el (dired-check-process, dired-shell-command):
    Call `dired-uncache'.
    (dired-compress-file): Use `file-local-name'.
    
    * lisp/net/tramp-adb.el (tramp-adb-file-name-handler-alist):
    * lisp/net/tramp-archive.el (tramp-archive-file-name-handler-alist):
    * lisp/net/tramp-crypt.el (tramp-crypt-file-name-handler-alist):
    * lisp/net/tramp-gvfs.el (tramp-gvfs-file-name-handler-alist):
    * lisp/net/tramp-rclone.el (tramp-rclone-file-name-handler-alist):
    * lisp/net/tramp-smb.el (tramp-smb-file-name-handler-alist):
    * lisp/net/tramp-sshfs.el (tramp-sshfs-file-name-handler-alist):
    * lisp/net/tramp-sudoedit.el (tramp-sudoedit-file-name-handler-alist):
    Remove superfluous comment.
    
    * lisp/net/tramp-sh.el (dired-compress-file): Declare.
    (tramp-sh-handle-dired-compress-file): Call real handler for
    Emacs >= 29.
    
    * lisp/net/tramp.el (tramp-file-name-for-operation): Reorder list.
    
    * test/lisp/net/tramp-tests.el (tramp-test45-dired-compress-file)
    (tramp-test45-dired-compress-dir): Adapt comment.
---
 lisp/dired-aux.el            |  21 +++++----
 lisp/icomplete.el            |   2 +-
 lisp/net/tramp-adb.el        |   1 -
 lisp/net/tramp-archive.el    |   1 -
 lisp/net/tramp-crypt.el      |   1 -
 lisp/net/tramp-gvfs.el       |   1 -
 lisp/net/tramp-rclone.el     |   1 -
 lisp/net/tramp-sh.el         | 106 +++++++++++++++++++++++--------------------
 lisp/net/tramp-smb.el        |   1 -
 lisp/net/tramp-sshfs.el      |   1 -
 lisp/net/tramp-sudoedit.el   |   1 -
 lisp/net/tramp.el            |  29 ++++++------
 test/lisp/net/tramp-tests.el |   6 ++-
 13 files changed, 87 insertions(+), 85 deletions(-)

diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el
index 7d81d45..92409db 100644
--- a/lisp/dired-aux.el
+++ b/lisp/dired-aux.el
@@ -1007,6 +1007,7 @@ Else returns nil for success."
       (erase-buffer)
       (setq default-directory dir      ; caller's default-directory
            err (not (eq 0 (apply #'process-file program nil t nil arguments))))
+      (dired-uncache dir)
       (if err
          (progn
            (dired-log (concat program " " (prin1-to-string arguments) "\n"))
@@ -1032,6 +1033,7 @@ Return the result of `process-file' - zero for success."
                    nil
                    shell-command-switch
                    cmd)))
+        (dired-uncache dir)
         (unless (zerop res)
           (pop-to-buffer out-buffer))
         res))))
@@ -1280,9 +1282,9 @@ Return nil if no change in files."
                (prog1 (setq newname (file-name-as-directory newname))
                  (dired-shell-command
                   (replace-regexp-in-string
-                   "%o" (shell-quote-argument newname)
+                   "%o" (shell-quote-argument (file-local-name newname))
                    (replace-regexp-in-string
-                    "%i" (shell-quote-argument file)
+                    "%i" (shell-quote-argument (file-local-name file))
                     command
                     nil t)
                    nil t)))
@@ -1293,10 +1295,10 @@ Return nil if no change in files."
                            (dired-check-process msg
                                                 (substring command 0 match)
                                                 (substring command (1+ match))
-                                                file)
+                                                (file-local-name file))
                          (dired-check-process msg
                                               command
-                                              file))
+                                              (file-local-name file)))
                  newname))))
           (t
            ;; We don't recognize the file as compressed, so compress it.
@@ -1314,7 +1316,8 @@ Return nil if no change in files."
                                (default-directory (file-name-directory file)))
                            (dired-shell-command
                             (replace-regexp-in-string
-                             "%o" (shell-quote-argument out-name)
+                             "%o" (shell-quote-argument
+                                   (file-local-name out-name))
                              (replace-regexp-in-string
                               "%i" (shell-quote-argument
                                     (file-name-nondirectory file))
@@ -1344,9 +1347,10 @@ see `dired-compress-file-alist' for the supported 
suffixes list"
                                 out-name)))
                           (dired-shell-command
                            (replace-regexp-in-string
-                            "%o" (shell-quote-argument out-name)
+                            "%o" (shell-quote-argument
+                                  (file-local-name out-name))
                             (replace-regexp-in-string
-                             "%i" (shell-quote-argument file)
+                             "%i" (shell-quote-argument (file-local-name file))
                              (cdr rule)
                              nil t)
                             nil t))
@@ -1361,7 +1365,8 @@ see `dired-compress-file-alist' for the supported 
suffixes list"
                             out-name)))))
              (file-error
               (if (not (dired-check-process (concat "Compressing " file)
-                                            "compress" "-f" file))
+                                            "compress" "-f"
+                                            (file-local-name file)))
                   ;; Don't use NEWNAME with `compress'.
                   (concat file ".Z"))))))))
 
diff --git a/lisp/icomplete.el b/lisp/icomplete.el
index f909a3b..8ead8a6 100644
--- a/lisp/icomplete.el
+++ b/lisp/icomplete.el
@@ -418,7 +418,7 @@ if that doesn't produce a completion match."
                 icomplete-show-matches-on-no-input t
                 icomplete-hide-common-prefix nil
                 icomplete-scroll (not (null icomplete-vertical-mode))
-                completion-styles '(flex)
+                completion-styles '(flex basic)
                 completion-flex-nospace nil
                 completion-category-defaults nil
                 completion-ignore-case t
diff --git a/lisp/net/tramp-adb.el b/lisp/net/tramp-adb.el
index 374e5db..895543d 100644
--- a/lisp/net/tramp-adb.el
+++ b/lisp/net/tramp-adb.el
@@ -119,7 +119,6 @@ It is used for TCP/IP devices."
     (directory-files . tramp-handle-directory-files)
     (directory-files-and-attributes
      . tramp-adb-handle-directory-files-and-attributes)
-    ;; Starting with Emacs 29.1, `dired-compress-file' isn't magic anymore.
     (dired-compress-file . ignore)
     (dired-uncache . tramp-handle-dired-uncache)
     (exec-path . tramp-adb-handle-exec-path)
diff --git a/lisp/net/tramp-archive.el b/lisp/net/tramp-archive.el
index 578f9fc..3e0d876 100644
--- a/lisp/net/tramp-archive.el
+++ b/lisp/net/tramp-archive.el
@@ -223,7 +223,6 @@ It must be supported by libarchive(3).")
     (directory-files . tramp-handle-directory-files)
     (directory-files-and-attributes
      . tramp-handle-directory-files-and-attributes)
-    ;; Starting with Emacs 29.1, `dired-compress-file' isn't magic anymore.
     (dired-compress-file . tramp-archive-handle-not-implemented)
     (dired-uncache . tramp-archive-handle-dired-uncache)
     (exec-path . ignore)
diff --git a/lisp/net/tramp-crypt.el b/lisp/net/tramp-crypt.el
index f431f97..42b67ac 100644
--- a/lisp/net/tramp-crypt.el
+++ b/lisp/net/tramp-crypt.el
@@ -169,7 +169,6 @@ If NAME doesn't belong to a crypted remote directory, retun 
nil."
     (directory-files . tramp-crypt-handle-directory-files)
     (directory-files-and-attributes
      . tramp-handle-directory-files-and-attributes)
-    ;; Starting with Emacs 29.1, `dired-compress-file' isn't magic anymore.
     (dired-compress-file . ignore)
     (dired-uncache . tramp-handle-dired-uncache)
     (exec-path . ignore)
diff --git a/lisp/net/tramp-gvfs.el b/lisp/net/tramp-gvfs.el
index 11de71a..220ce63 100644
--- a/lisp/net/tramp-gvfs.el
+++ b/lisp/net/tramp-gvfs.el
@@ -756,7 +756,6 @@ It has been changed in GVFS 1.14.")
     (directory-files . tramp-handle-directory-files)
     (directory-files-and-attributes
      . tramp-handle-directory-files-and-attributes)
-    ;; Starting with Emacs 29.1, `dired-compress-file' isn't magic anymore.
     (dired-compress-file . ignore)
     (dired-uncache . tramp-handle-dired-uncache)
     (exec-path . ignore)
diff --git a/lisp/net/tramp-rclone.el b/lisp/net/tramp-rclone.el
index c997215..28a1c01 100644
--- a/lisp/net/tramp-rclone.el
+++ b/lisp/net/tramp-rclone.el
@@ -83,7 +83,6 @@
     (directory-files . tramp-fuse-handle-directory-files)
     (directory-files-and-attributes
      . tramp-handle-directory-files-and-attributes)
-    ;; Starting with Emacs 29.1, `dired-compress-file' isn't magic anymore.
     (dired-compress-file . ignore)
     (dired-uncache . tramp-handle-dired-uncache)
     (exec-path . ignore)
diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el
index 533ddcf..c61025a 100644
--- a/lisp/net/tramp-sh.el
+++ b/lisp/net/tramp-sh.el
@@ -34,6 +34,8 @@
 (eval-when-compile (require 'cl-lib))
 (require 'tramp)
 
+;; `dired-*' declarations can be removed, starting with Emacs 29.1.
+(declare-function dired-compress-file "dired-aux")
 (declare-function dired-remove-file "dired-aux")
 (defvar dired-compress-file-suffixes)
 (defvar process-file-return-signal-string)
@@ -952,7 +954,8 @@ Format specifiers \"%s\" are replaced before the script is 
used.")
     (directory-files . tramp-handle-directory-files)
     (directory-files-and-attributes
      . tramp-sh-handle-directory-files-and-attributes)
-    ;; Starting with Emacs 29.1, `dired-compress-file' isn't magic anymore.
+    ;; Starting with Emacs 29.1, `dired-compress-file' performed by
+    ;; default handler.
     (dired-compress-file . tramp-sh-handle-dired-compress-file)
     (dired-uncache . tramp-handle-dired-uncache)
     (exec-path . tramp-sh-handle-exec-path)
@@ -2472,57 +2475,60 @@ The method used must be an out-of-band method."
 
 ;; Dired.
 
-;; Starting with Emacs 29.1, `dired-compress-file' isn't magic anymore.
 (defun tramp-sh-handle-dired-compress-file (file)
   "Like `dired-compress-file' for Tramp files."
-  ;; Code stolen mainly from dired-aux.el.
-  (with-parsed-tramp-file-name file nil
-    (tramp-flush-file-properties v localname)
-    (let ((suffixes dired-compress-file-suffixes)
-         suffix)
-      ;; See if any suffix rule matches this file name.
-      (while suffixes
-       (let (case-fold-search)
-         (if (string-match-p (car (car suffixes)) localname)
-             (setq suffix (car suffixes) suffixes nil))
-         (setq suffixes (cdr suffixes))))
-
-      (cond ((file-symlink-p file) nil)
-           ((and suffix (nth 2 suffix))
-            ;; We found an uncompression rule.
-            (with-tramp-progress-reporter
-                 v 0 (format "Uncompressing %s" file)
-              (when (tramp-send-command-and-check
-                     v (if (string-match-p "%[io]" (nth 2 suffix))
-                            (replace-regexp-in-string
-                             "%i" (tramp-shell-quote-argument localname)
-                             (nth 2 suffix))
-                          (concat (nth 2 suffix) " "
-                                  (tramp-shell-quote-argument localname))))
-                (unless (string-match-p "\\.tar\\.gz" file)
-                   (dired-remove-file file))
-                (string-match (car suffix) file)
-                (concat (substring file 0 (match-beginning 0))))))
-           (t
-            ;; We don't recognize the file as compressed, so compress it.
-            ;; Try gzip.
-            (with-tramp-progress-reporter v 0 (format "Compressing %s" file)
-              (when (tramp-send-command-and-check
-                     v (if (file-directory-p file)
-                            (format "tar -cf - %s | gzip -c9 > %s.tar.gz"
-                                    (tramp-shell-quote-argument
-                                     (file-name-nondirectory localname))
-                                    (tramp-shell-quote-argument localname))
-                          (concat "gzip -f "
-                                 (tramp-shell-quote-argument localname))))
-                (unless (file-directory-p file)
-                   (dired-remove-file file))
-                (catch 'found nil
-                        (dolist (target (mapcar (lambda (suffix)
-                                                  (concat file suffix))
-                                                '(".tar.gz" ".gz" ".z")))
-                          (when (file-exists-p target)
-                            (throw 'found target)))))))))))
+  ;; Starting with Emacs 29.1, `dired-compress-file' is performed by
+  ;; default handler.
+  (if (>= emacs-major-version 29)
+      (tramp-run-real-handler #'dired-compress-file (list file))
+    ;; Code stolen mainly from dired-aux.el.
+    (with-parsed-tramp-file-name file nil
+      (tramp-flush-file-properties v localname)
+      (let ((suffixes dired-compress-file-suffixes)
+           suffix)
+       ;; See if any suffix rule matches this file name.
+       (while suffixes
+         (let (case-fold-search)
+           (if (string-match-p (car (car suffixes)) localname)
+               (setq suffix (car suffixes) suffixes nil))
+           (setq suffixes (cdr suffixes))))
+
+       (cond ((file-symlink-p file) nil)
+             ((and suffix (nth 2 suffix))
+              ;; We found an uncompression rule.
+              (with-tramp-progress-reporter
+                   v 0 (format "Uncompressing %s" file)
+                (when (tramp-send-command-and-check
+                       v (if (string-match-p "%[io]" (nth 2 suffix))
+                              (replace-regexp-in-string
+                               "%i" (tramp-shell-quote-argument localname)
+                               (nth 2 suffix))
+                            (concat (nth 2 suffix) " "
+                                    (tramp-shell-quote-argument localname))))
+                  (unless (string-match-p "\\.tar\\.gz" file)
+                     (dired-remove-file file))
+                  (string-match (car suffix) file)
+                  (concat (substring file 0 (match-beginning 0))))))
+             (t
+              ;; We don't recognize the file as compressed, so
+              ;; compress it.  Try gzip.
+              (with-tramp-progress-reporter v 0 (format "Compressing %s" file)
+                (when (tramp-send-command-and-check
+                       v (if (file-directory-p file)
+                              (format "tar -cf - %s | gzip -c9 > %s.tar.gz"
+                                      (tramp-shell-quote-argument
+                                       (file-name-nondirectory localname))
+                                      (tramp-shell-quote-argument localname))
+                            (concat "gzip -f "
+                                   (tramp-shell-quote-argument localname))))
+                  (unless (file-directory-p file)
+                     (dired-remove-file file))
+                  (catch 'found nil
+                          (dolist (target (mapcar (lambda (suffix)
+                                                    (concat file suffix))
+                                                  '(".tar.gz" ".gz" ".z")))
+                            (when (file-exists-p target)
+                              (throw 'found target))))))))))))
 
 (defun tramp-sh-handle-insert-directory
     (filename switches &optional wildcard full-directory-p)
diff --git a/lisp/net/tramp-smb.el b/lisp/net/tramp-smb.el
index ac567dc..0b25164 100644
--- a/lisp/net/tramp-smb.el
+++ b/lisp/net/tramp-smb.el
@@ -234,7 +234,6 @@ See `tramp-actions-before-shell' for more info.")
     (directory-files . tramp-smb-handle-directory-files)
     (directory-files-and-attributes
      . tramp-handle-directory-files-and-attributes)
-    ;; Starting with Emacs 29.1, `dired-compress-file' isn't magic anymore.
     (dired-compress-file . ignore)
     (dired-uncache . tramp-handle-dired-uncache)
     (exec-path . ignore)
diff --git a/lisp/net/tramp-sshfs.el b/lisp/net/tramp-sshfs.el
index fc77d99..a9d8dc9 100644
--- a/lisp/net/tramp-sshfs.el
+++ b/lisp/net/tramp-sshfs.el
@@ -83,7 +83,6 @@
     (directory-files . tramp-fuse-handle-directory-files)
     (directory-files-and-attributes
      . tramp-handle-directory-files-and-attributes)
-    ;; Starting with Emacs 29.1, `dired-compress-file' isn't magic anymore.
     (dired-compress-file . ignore)
     (dired-uncache . tramp-handle-dired-uncache)
     (exec-path . tramp-sshfs-handle-exec-path)
diff --git a/lisp/net/tramp-sudoedit.el b/lisp/net/tramp-sudoedit.el
index 8429904..7cf0ea4 100644
--- a/lisp/net/tramp-sudoedit.el
+++ b/lisp/net/tramp-sudoedit.el
@@ -75,7 +75,6 @@ See `tramp-actions-before-shell' for more info.")
     (directory-files . tramp-handle-directory-files)
     (directory-files-and-attributes
      . tramp-handle-directory-files-and-attributes)
-    ;; Starting with Emacs 29.1, `dired-compress-file' isn't magic anymore.
     (dired-compress-file . ignore)
     (dired-uncache . tramp-handle-dired-uncache)
     (exec-path . ignore)
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index f449360..876bbb2 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -2476,28 +2476,25 @@ Must be handled by the callers."
            '(access-file byte-compiler-base-file-name delete-directory
              delete-file diff-latest-backup-file directory-file-name
              directory-files directory-files-and-attributes
-             dired-uncache file-acl file-accessible-directory-p
-             file-attributes file-directory-p file-executable-p
-             file-exists-p file-local-copy file-modes
-             file-name-as-directory file-name-case-insensitive-p
-             file-name-directory file-name-nondirectory
-             file-name-sans-versions file-notify-add-watch
-             file-ownership-preserved-p file-readable-p
-             file-regular-p file-remote-p file-selinux-context
-             file-symlink-p file-truename file-writable-p
-             find-backup-file-name get-file-buffer insert-directory
-             insert-file-contents load make-directory
-             make-directory-internal set-file-acl set-file-modes
-             set-file-selinux-context set-file-times
+             dired-compress-file dired-uncache file-acl
+             file-accessible-directory-p file-attributes
+             file-directory-p file-executable-p file-exists-p
+             file-local-copy file-modes file-name-as-directory
+             file-name-case-insensitive-p file-name-directory
+             file-name-nondirectory file-name-sans-versions
+             file-notify-add-watch file-ownership-preserved-p
+             file-readable-p file-regular-p file-remote-p
+             file-selinux-context file-symlink-p file-truename
+             file-writable-p find-backup-file-name get-file-buffer
+             insert-directory insert-file-contents load
+             make-directory make-directory-internal set-file-acl
+             set-file-modes set-file-selinux-context set-file-times
              substitute-in-file-name unhandled-file-name-directory
              vc-registered
              ;; Emacs 27+ only.
              file-system-info
              ;; Emacs 28+ only.
              file-locked-p lock-file make-lock-file-name unlock-file
-             ;; Starting with Emacs 29.1, `dired-compress-file' isn't
-             ;; magic anymore.
-             dired-compress-file
              ;; Tramp internal magic file name function.
              tramp-set-file-uid-gid))
     (if (file-name-absolute-p (nth 0 args))
diff --git a/test/lisp/net/tramp-tests.el b/test/lisp/net/tramp-tests.el
index 397e707..52c6159 100644
--- a/test/lisp/net/tramp-tests.el
+++ b/test/lisp/net/tramp-tests.el
@@ -6935,7 +6935,8 @@ process sentinels.  They shall not disturb each other."
   (skip-unless (tramp--test-enabled))
   (skip-unless (tramp--test-sh-p))
   (skip-unless (not (tramp--test-crypt-p)))
-  ;; Starting with Emacs 29.1, `dired-compress-file' isn't magic anymore.
+  ;; Starting with Emacs 29.1, `dired-compress-file' is performed by
+  ;; default handler.
   (skip-unless (not (tramp--test-emacs29-p)))
 
   (let ((default-directory tramp-test-temporary-file-directory)
@@ -6955,7 +6956,8 @@ process sentinels.  They shall not disturb each other."
   (skip-unless (tramp--test-enabled))
   (skip-unless (tramp--test-sh-p))
   (skip-unless (not (tramp--test-crypt-p)))
-  ;; Starting with Emacs 29.1, `dired-compress-file' isn't magic anymore.
+  ;; Starting with Emacs 29.1, `dired-compress-file' is performed by
+  ;; default handler.
   (skip-unless (not (tramp--test-emacs29-p)))
 
   (let ((default-directory tramp-test-temporary-file-directory)



reply via email to

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