# HG changeset patch # User Michael Albinus # Date 1271369941 -7200 # Node ID 973ae1d72536842d6ccaf4bb435f8710c2ac8240 # Parent 852124e6110fc7b166c8b60e513c7a00318a915d * 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. diff -r 852124e6110f -r 973ae1d72536 lisp/ChangeLog --- a/lisp/ChangeLog Thu Apr 15 14:52:27 2010 -0700 +++ b/lisp/ChangeLog Fri Apr 16 00:19:01 2010 +0200 @@ -1,3 +1,11 @@ +2010-04-15 Michael Albinus + + * 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 * progmodes/verilog-mode.el (verilog-forward-sexp): Avoid free variable. diff -r 852124e6110f -r 973ae1d72536 lisp/net/tramp.el --- a/lisp/net/tramp.el Thu Apr 15 14:52:27 2010 -0700 +++ b/lisp/net/tramp.el Fri Apr 16 00:19:01 2010 +0200 @@ -2170,7 +2170,9 @@ (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 @@ (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)))