]> git.eshelyaron.com Git - emacs.git/commitdiff
* net/tramp.el (tramp-do-copy-or-rename-file): Add progress reporter.
authorMichael Albinus <albinus@detlef>
Sat, 10 Apr 2010 15:51:46 +0000 (17:51 +0200)
committerMichael Albinus <albinus@detlef>
Sat, 10 Apr 2010 15:51:46 +0000 (17:51 +0200)
lisp/ChangeLog
lisp/net/tramp.el

index 1177e458b837d91e2e1ca5578af1bf29d0e9c434..102ae6c37feef55555cf90bfff17e4c5f0760550 100644 (file)
@@ -1,3 +1,7 @@
+2010-04-10  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp.el (tramp-do-copy-or-rename-file): Add progress reporter.
+
 2010-04-10  Michael Albinus  <michael.albinus@gmx.de>
 
        Synchronize with Tramp repository.
index dc7c90581f97eff32d6589312839197b2bb060ff..c1caeb7d15b8a9171e514935b40a6bcc4dc71a39 100644 (file)
@@ -3524,7 +3524,8 @@ and `rename'.  FILENAME and NEWNAME must be absolute file names."
   (unless (memq op '(copy rename))
     (error "Unknown operation `%s', must be `copy' or `rename'" op))
   (let ((t1 (tramp-tramp-file-p filename))
-       (t2 (tramp-tramp-file-p newname)))
+       (t2 (tramp-tramp-file-p newname))
+       pr tm)
 
     (when (and (not ok-if-already-exists) (file-exists-p newname))
       (with-parsed-tramp-file-name (if t1 filename newname) nil
@@ -3534,7 +3535,16 @@ and `rename'.  FILENAME and NEWNAME must be absolute file names."
     (with-parsed-tramp-file-name (if t1 filename newname) nil
       (tramp-message v 0 "Transferring %s to %s..." filename newname))
 
-    (prog1
+    ;; We start a pulsing progress reporter.  Introduced in Emacs 24.1.
+    (when (> (nth 7 (file-attributes filename)) tramp-copy-size-limit)
+      (condition-case nil
+         (setq pr (funcall
+                   'make-progress-reporter
+                   (format "Transferring %s to %s..." filename newname))
+               tm (run-at-time 0 0.1 'progress-reporter-update pr))
+       (error nil)))
+
+    (unwind-protect
        (cond
         ;; Both are Tramp files.
         ((and t1 t2)
@@ -3604,6 +3614,8 @@ and `rename'.  FILENAME and NEWNAME must be absolute file names."
          (tramp-flush-file-property v (file-name-directory localname))
          (tramp-flush-file-property v localname)))
 
+      ;; Stop progress reporter.
+      (if tm (cancel-timer tm))
       (with-parsed-tramp-file-name (if t1 filename newname) nil
        (tramp-message v 0 "Transferring %s to %s...done" filename newname)))))
 
@@ -8569,7 +8581,6 @@ Only works for Bourne-like shells."
 ;; * Remove unneeded parameters from methods.
 ;; * Make it work for different encodings, and for different file name
 ;;   encodings, too.  (Daniel Pittman)
-;; * Progress reports while copying files.  (Michael Kifer)
 ;; * Don't search for perl5 and perl.  Instead, only search for perl and
 ;;   then look if it's the right version (with `perl -v').
 ;; * When editing a remote CVS controlled file as a different user, VC