changeset 107822:02b5fe4a01fe

* net/tramp.el (tramp-do-copy-or-rename-file): Add progress reporter.
author Michael Albinus <albinus@detlef>
date Sat, 10 Apr 2010 17:51:46 +0200
parents 253a7b1999c7
children 46975e084e0c
files lisp/ChangeLog lisp/net/tramp.el
diffstat 2 files changed, 18 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Sat Apr 10 14:59:22 2010 +0200
+++ b/lisp/ChangeLog	Sat Apr 10 17:51:46 2010 +0200
@@ -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.
--- a/lisp/net/tramp.el	Sat Apr 10 14:59:22 2010 +0200
+++ b/lisp/net/tramp.el	Sat Apr 10 17:51:46 2010 +0200
@@ -3524,7 +3524,8 @@
   (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 @@
     (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 @@
 	  (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 @@
 ;; * 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