]> git.eshelyaron.com Git - emacs.git/commitdiff
* net/tramp.el (tramp-error-with-buffer): Don't show the
authorMichael Albinus <albinus@detlef>
Thu, 15 Apr 2010 22:19:01 +0000 (00:19 +0200)
committerMichael Albinus <albinus@detlef>
Thu, 15 Apr 2010 22:19:01 +0000 (00:19 +0200)
connection buffer when we are in completion mode.
(tramp-file-name-handler): Catch the error for some operations
when we are in completion mode.  This gives the user the chance to
correct the file name in the minibuffer.

lisp/ChangeLog
lisp/net/tramp.el

index 4fe7bdca807d7ddde8d1b4476de8a2342f971ac9..5ac0723343b353fa4db3fad16fcb678a60ad0ace 100644 (file)
@@ -1,3 +1,11 @@
+2010-04-15  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp.el (tramp-error-with-buffer): Don't show the
+       connection buffer when we are in completion mode.
+       (tramp-file-name-handler): Catch the error for some operations
+       when we are in completion mode.  This gives the user the chance to
+       correct the file name in the minibuffer.
+
 2010-04-15  Glenn Morris  <rgm@gnu.org>
 
        * progmodes/verilog-mode.el (verilog-forward-sexp): Avoid free variable.
index 5354d8983416d39c325e0d128262e2e5a7cc94b5..fa17ba2f4f8443cb99f5b6d9ce13e8fb95c0d2f1 100644 (file)
@@ -2170,7 +2170,9 @@ an input event arrives.  The other arguments are passed to `tramp-error'."
   (save-window-excursion
     (unwind-protect
        (apply 'tramp-error vec-or-proc signal fmt-string args)
-      (when (and vec-or-proc (not (zerop tramp-verbose)))
+      (when (and vec-or-proc
+                (not (zerop tramp-verbose))
+                (not (tramp-completion-mode-p)))
        (let ((enable-recursive-minibuffers t))
          (pop-to-buffer
           (or (and (bufferp buffer) buffer)
@@ -5425,19 +5427,28 @@ Falls back to normal file name handler if no Tramp file name handler exists."
               (completion (tramp-completion-mode-p))
               (foreign (tramp-find-foreign-file-name-handler filename)))
          (with-parsed-tramp-file-name filename nil
-           (cond
-            ;; When we are in completion mode, some operations
-            ;; shouldn't be handled by backend.
-            ((and completion (zerop (length localname))
-                  (memq operation '(file-exists-p file-directory-p)))
-             t)
-            ((and completion (zerop (length localname))
-                  (memq operation '(file-name-as-directory)))
-             filename)
-            ;; Call the backend function.
-            (foreign (apply foreign operation args))
-            ;; Nothing to do for us.
-            (t (tramp-run-real-handler operation args))))))
+           ;; Call the backend function.
+           (if foreign
+               (condition-case err
+                   (apply foreign operation args)
+                 (error
+                  (cond
+                   ;; When we are in completion mode, some failed
+                   ;; operations shall return at least a default
+                   ;; value in order to give the user a chance to
+                   ;; correct the file name in the minibuffer.
+                   ((and completion (zerop (length localname))
+                         (memq operation '(file-exists-p file-directory-p)))
+                    t)
+                   ((and completion (zerop (length localname))
+                         (memq operation
+                               '(expand-file-name file-name-as-directory)))
+                    filename)
+                   ;; Propagate the error.
+                   (t (signal (car err) (cdr err))))))
+             ;; Nothing to do for us.
+             (tramp-run-real-handler operation args)))))
+
     ;; When `tramp-mode' is not enabled, we don't do anything.
     (tramp-run-real-handler operation args)))