unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* TRAMP: Host name must not match method ...
@ 2013-08-14 13:06 Matt McClure
  2013-08-16 13:15 ` Michael Albinus
  0 siblings, 1 reply; 9+ messages in thread
From: Matt McClure @ 2013-08-14 13:06 UTC (permalink / raw)
  To: emacs-devel, tramp-devel

Hi,

In recent nightly builds of Emacs, I'm struggling to use TRAMP file
paths as I've usually done. I'm getting an error message "Host name
must not match method `ssh'".

Here's a minimal test case:

    $ open -a Emacs --args -Q --no-site-file

Then:

    C-x C-f /ssh:vagrant@192.168.33.2:/ RET

Here's what *Messages* says:

    For information about GNU Emacs and the GNU system, type C-h C-a.
    Tramp: Opening connection for vagrant@192.168.33.2 using ssh...
    Tramp: Sending command `exec ssh -l vagrant  -o
ControlPath=/var/folders/_d/5p0jtv397qs73qr_frd6bw180000gn/T/tramp.9409723.%r@%h:%p
-o ControlMaster=auto -o ControlPersist=no -e none 192.168.33.2'
    Tramp: Waiting for prompts from remote shell...done
    Tramp: Found remote shell prompt on `192.168.33.2'
    Tramp: Opening connection for vagrant@192.168.33.2 using ssh...done
    completion--some: Host name must not match method `ssh'

Here's what M-x view-lossage says:

    C-x C-f C-a C-k / s s h : v a g r a n t @ 1 9 2 . 1
6 8 . 3 3 . 2 : / <return> <f1> l

I tried to reproduce more succinctly with:

    $ open -a Emacs --args -Q --no-site-file --eval '(find-file
"/ssh:vagrant@192.168.33.2:/")'

To my surprise, it worked as intended rather than failing. So maybe
that's a clue.

I found conversations on tramp-devel[1] and bug-gnu-emacs[2] that look
related, but I haven't found the right combination of keystrokes to
make it work for me.

Is this a defect, or am I doing something wrong?

If the latter, what should I do instead?

[1]: http://thread.gmane.org/gmane.emacs.tramp/8323/focus=8327
[2]: http://thread.gmane.org/gmane.emacs.bugs/72217/focus=72255

-- 
Matt McClure
http://matthewlmcclure.com
http://www.mapmyfitness.com/profile/matthewlmcclure



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: TRAMP: Host name must not match method ...
  2013-08-14 13:06 TRAMP: Host name must not match method Matt McClure
@ 2013-08-16 13:15 ` Michael Albinus
  2013-08-17 17:18   ` Matt McClure
  0 siblings, 1 reply; 9+ messages in thread
From: Michael Albinus @ 2013-08-16 13:15 UTC (permalink / raw)
  To: Matt McClure; +Cc: tramp-devel, emacs-devel

Matt McClure <matthewlmcclure@gmail.com> writes:

> Hi,

Hi Matt,

> In recent nightly builds of Emacs, I'm struggling to use TRAMP file
> paths as I've usually done. I'm getting an error message "Host name
> must not match method `ssh'".
>
> Here's a minimal test case:
>
>     $ open -a Emacs --args -Q --no-site-file
>
> Then:
>
>     C-x C-f /ssh:vagrant@192.168.33.2:/ RET

I'm not able to reproduce it. Trying with other IP address and user name
of course, but it works locally (as every single day) for me.

> Here's what *Messages* says:
>
>     For information about GNU Emacs and the GNU system, type C-h C-a.
>     Tramp: Opening connection for vagrant@192.168.33.2 using ssh...
>     Tramp: Sending command `exec ssh -l vagrant  -o
> ControlPath=/var/folders/_d/5p0jtv397qs73qr_frd6bw180000gn/T/tramp.9409723.%r@%h:%p
> -o ControlMaster=auto -o ControlPersist=no -e none 192.168.33.2'
>     Tramp: Waiting for prompts from remote shell...done
>     Tramp: Found remote shell prompt on `192.168.33.2'
>     Tramp: Opening connection for vagrant@192.168.33.2 using ssh...done
>     completion--some: Host name must not match method `ssh'

It is unclear where the error comes from. Could you, please, perform

(setq debug-on-error t tramp-verbose 6)

and rerun the test. There might be a backtrace, and there will be a
Tramp debug buffer. Both might show us what's up.

> I tried to reproduce more succinctly with:
>
>     $ open -a Emacs --args -Q --no-site-file --eval '(find-file
> "/ssh:vagrant@192.168.33.2:/")'
>
> To my surprise, it worked as intended rather than failing. So maybe
> that's a clue.

No, this doesn't help. The test in Tramp is not performed when you are
not in interactive mode. So it is normal that it works for you this way.

Best regards, Michael.



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: TRAMP: Host name must not match method ...
  2013-08-16 13:15 ` Michael Albinus
@ 2013-08-17 17:18   ` Matt McClure
  2013-08-17 17:41     ` Matt McClure
  2013-08-19 12:07     ` Michael Albinus
  0 siblings, 2 replies; 9+ messages in thread
From: Matt McClure @ 2013-08-17 17:18 UTC (permalink / raw)
  To: Michael Albinus; +Cc: tramp-devel, emacs-devel

On Fri, Aug 16, 2013 at 9:15 AM, Michael Albinus <michael.albinus@gmx.de> wrote:
> Matt McClure <matthewlmcclure@gmail.com> writes:
>
> I'm not able to reproduce it. Trying with other IP address and user name
> of course, but it works locally (as every single day) for me.

Weird. FWIW, I'm using:

GNU Emacs 24.3.50.1 (x86_64-apple-darwin, NS apple-appkit-1038.36) of
2013-08-14 on bob.porkrind.org

> It is unclear where the error comes from. Could you, please, perform
>
> (setq debug-on-error t tramp-verbose 6)
>
> and rerun the test. There might be a backtrace, and there will be a
> Tramp debug buffer. Both might show us what's up.

That wasn't enough to get Emacs to show me a backtrace, but still a
good lead. I put a breakpoint in tramp-dissect-file-name at:

       (tramp-compat-user-error
        "Host name must not match method `%s'" host)))

I see it stop at the breakpoint while I'm typing the file path. The
first time, it stops after I type the colon in "/ssh:". Something must
trap the signal from inside tramp-compat-user-error before it leaks
back to me as the user, because I never get a (visual) bell.

Here's the backtrace the first time it stops:

      (progn (edebug-after (edebug-before 91) 93
(tramp-compat-user-error "Host name must not match method `%s'"
(edebug-after 0 92 host))))
      (if (edebug-after (edebug-before 70) 90 (and (edebug-after
(edebug-before 71) 73 (equal (edebug-after 0 72 tramp-syntax) (quote
ftp))) (edebug-after (edebug-before 74) 76 (null (edebug-after 0 75
method))) (edebug-after (edebug-before 77) 79 (null (edebug-after 0 78
user))) (edebug-after (edebug-before 80) 85 (member (edebug-after 0 81
host) (edebug-after (edebug-before 82) 84 (mapcar (quote car)
(edebug-after 0 83 tramp-methods))))) (edebug-after (edebug-before 86)
89 (not (edebug-after (edebug-before 87) 88
(tramp-completion-mode-p)))))) (progn (edebug-after (edebug-before 91)
93 (tramp-compat-user-error "Host name must not match method `%s'"
(edebug-after 0 92 host)))))
      (progn (edebug-after (edebug-before 47) 57 (if (edebug-after
(edebug-before 48) 51 (string-match (edebug-after 0 49
tramp-prefix-ipv6-regexp) (edebug-after 0 50 host))) (progn
(edebug-after (edebug-before 52) 56 (setq host (edebug-after
(edebug-before 53) 55 (replace-match "" nil t ...))))))) (edebug-after
(edebug-before 58) 68 (if (edebug-after (edebug-before 59) 62
(string-match (edebug-after 0 60 tramp-postfix-ipv6-regexp)
(edebug-after 0 61 host))) (progn (edebug-after (edebug-before 63) 67
(setq host (edebug-after (edebug-before 64) 66 (replace-match "" nil t
...))))))) (edebug-after (edebug-before 69) 94 (if (edebug-after
(edebug-before 70) 90 (and (edebug-after (edebug-before 71) 73 (equal
(edebug-after 0 72 tramp-syntax) (quote ftp))) (edebug-after
(edebug-before 74) 76 (null (edebug-after 0 75 method))) (edebug-after
(edebug-before 77) 79 (null (edebug-after 0 78 user))) (edebug-after
(edebug-before 80) 85 (member (edebug-after 0 81 host) (edebug-after
... 84 ...))) (edebug-after (edebug-before 86) 89 (not (edebug-after
... 88 ...))))) (progn (edebug-after (edebug-before 91) 93
(tramp-compat-user-error "Host name must not match method `%s'"
(edebug-after 0 92 host)))))))
      (if (edebug-after 0 46 host) (progn (edebug-after (edebug-before
47) 57 (if (edebug-after (edebug-before 48) 51 (string-match
(edebug-after 0 49 tramp-prefix-ipv6-regexp) (edebug-after 0 50
host))) (progn (edebug-after (edebug-before 52) 56 (setq host
(edebug-after ... 55 ...)))))) (edebug-after (edebug-before 58) 68 (if
(edebug-after (edebug-before 59) 62 (string-match (edebug-after 0 60
tramp-postfix-ipv6-regexp) (edebug-after 0 61 host))) (progn
(edebug-after (edebug-before 63) 67 (setq host (edebug-after ... 66
...)))))) (edebug-after (edebug-before 69) 94 (if (edebug-after
(edebug-before 70) 90 (and (edebug-after (edebug-before 71) 73 (equal
... ...)) (edebug-after (edebug-before 74) 76 (null ...))
(edebug-after (edebug-before 77) 79 (null ...)) (edebug-after
(edebug-before 80) 85 (member ... ...)) (edebug-after (edebug-before
86) 89 (not ...)))) (progn (edebug-after (edebug-before 91) 93
(tramp-compat-user-error "Host name must not match method `%s'"
(edebug-after 0 92 host))))))))
      (let ((method (edebug-after (edebug-before 15) 20 (match-string
(edebug-after (edebug-before 16) 18 (nth 1 (edebug-after 0 17
tramp-file-name-structure))) (edebug-after 0 19 name)))) (user
(edebug-after (edebug-before 21) 26 (match-string (edebug-after
(edebug-before 22) 24 (nth 2 (edebug-after 0 23
tramp-file-name-structure))) (edebug-after 0 25 name)))) (host
(edebug-after (edebug-before 27) 32 (match-string (edebug-after
(edebug-before 28) 30 (nth 3 (edebug-after 0 29
tramp-file-name-structure))) (edebug-after 0 31 name)))) (localname
(edebug-after (edebug-before 33) 38 (match-string (edebug-after
(edebug-before 34) 36 (nth 4 (edebug-after 0 35
tramp-file-name-structure))) (edebug-after 0 37 name)))) (hop
(edebug-after (edebug-before 39) 44 (match-string (edebug-after
(edebug-before 40) 42 (nth 5 (edebug-after 0 41
tramp-file-name-structure))) (edebug-after 0 43 name)))))
(edebug-after (edebug-before 45) 95 (if (edebug-after 0 46 host)
(progn (edebug-after (edebug-before 47) 57 (if (edebug-after
(edebug-before 48) 51 (string-match ... ...)) (progn (edebug-after ...
56 ...)))) (edebug-after (edebug-before 58) 68 (if (edebug-after
(edebug-before 59) 62 (string-match ... ...)) (progn (edebug-after ...
67 ...)))) (edebug-after (edebug-before 69) 94 (if (edebug-after
(edebug-before 70) 90 (and ... ... ... ... ...)) (progn (edebug-after
... 93 ...))))))) (edebug-after (edebug-before 96) 124 (if
(edebug-after 0 97 nodefault) (edebug-after (edebug-before 98) 104
(vector (edebug-after 0 99 method) (edebug-after 0 100 user)
(edebug-after 0 101 host) (edebug-after 0 102 localname) (edebug-after
0 103 hop))) (edebug-after (edebug-before 105) 123 (vector
(edebug-after (edebug-before 106) 110 (tramp-find-method (edebug-after
0 107 method) (edebug-after 0 108 user) (edebug-after 0 109 host)))
(edebug-after (edebug-before 111) 115 (tramp-find-user (edebug-after 0
112 method) (edebug-after 0 113 user) (edebug-after 0 114 host)))
(edebug-after (edebug-before 116) 120 (tramp-find-host (edebug-after 0
117 method) (edebug-after 0 118 user) (edebug-after 0 119 host)))
(edebug-after 0 121 localname) (edebug-after 0 122 hop))))))
      (let ((match (edebug-after (edebug-before 2) 7 (string-match
(edebug-after (edebug-before 3) 5 (nth 0 (edebug-after 0 4
tramp-file-name-structure))) (edebug-after 0 6 name))))) (edebug-after
(edebug-before 8) 13 (if (edebug-after 0 9 match) nil (edebug-after
(edebug-before 10) 12 (tramp-compat-user-error "Not a Tramp file name:
%s" (edebug-after 0 11 name))))) (edebug-after (edebug-before 14) 125
(let ((method (edebug-after (edebug-before 15) 20 (match-string
(edebug-after ... 18 ...) (edebug-after 0 19 name)))) (user
(edebug-after (edebug-before 21) 26 (match-string (edebug-after ... 24
...) (edebug-after 0 25 name)))) (host (edebug-after (edebug-before
27) 32 (match-string (edebug-after ... 30 ...) (edebug-after 0 31
name)))) (localname (edebug-after (edebug-before 33) 38 (match-string
(edebug-after ... 36 ...) (edebug-after 0 37 name)))) (hop
(edebug-after (edebug-before 39) 44 (match-string (edebug-after ... 42
...) (edebug-after 0 43 name))))) (edebug-after (edebug-before 45) 95
(if (edebug-after 0 46 host) (progn (edebug-after (edebug-before 47)
57 (if ... ...)) (edebug-after (edebug-before 58) 68 (if ... ...))
(edebug-after (edebug-before 69) 94 (if ... ...))))) (edebug-after
(edebug-before 96) 124 (if (edebug-after 0 97 nodefault) (edebug-after
(edebug-before 98) 104 (vector (edebug-after 0 99 method)
(edebug-after 0 100 user) (edebug-after 0 101 host) (edebug-after 0
102 localname) (edebug-after 0 103 hop))) (edebug-after (edebug-before
105) 123 (vector (edebug-after ... 110 ...) (edebug-after ... 115 ...)
(edebug-after ... 120 ...) (edebug-after 0 121 localname)
(edebug-after 0 122 hop))))))))
      (progn (edebug-after (edebug-before 1) 126 (let ((match
(edebug-after (edebug-before 2) 7 (string-match (edebug-after ... 5
...) (edebug-after 0 6 name))))) (edebug-after (edebug-before 8) 13
(if (edebug-after 0 9 match) nil (edebug-after (edebug-before 10) 12
(tramp-compat-user-error "Not a Tramp file name: %s" (edebug-after 0
11 name))))) (edebug-after (edebug-before 14) 125 (let ((method
(edebug-after ... 20 ...)) (user (edebug-after ... 26 ...)) (host
(edebug-after ... 32 ...)) (localname (edebug-after ... 38 ...)) (hop
(edebug-after ... 44 ...))) (edebug-after (edebug-before 45) 95 (if
(edebug-after 0 46 host) (progn ... ... ...))) (edebug-after
(edebug-before 96) 124 (if (edebug-after 0 97 nodefault) (edebug-after
... 104 ...) (edebug-after ... 123 ...))))))))
      (unwind-protect (progn (edebug-after (edebug-before 1) 126 (let
((match (edebug-after (edebug-before 2) 7 (string-match ... ...))))
(edebug-after (edebug-before 8) 13 (if (edebug-after 0 9 match) nil
(edebug-after (edebug-before 10) 12 (tramp-compat-user-error "Not a
Tramp file name: %s" ...)))) (edebug-after (edebug-before 14) 125 (let
((method ...) (user ...) (host ...) (localname ...) (hop ...))
(edebug-after (edebug-before 45) 95 (if ... ...)) (edebug-after
(edebug-before 96) 124 (if ... ... ...))))))) (set-match-data
save-match-data-internal (quote evaporate)))
      (let ((save-match-data-internal (match-data))) (unwind-protect
(progn (edebug-after (edebug-before 1) 126 (let ((match (edebug-after
... 7 ...))) (edebug-after (edebug-before 8) 13 (if (edebug-after 0 9
match) nil (edebug-after ... 12 ...))) (edebug-after (edebug-before
14) 125 (let (... ... ... ... ...) (edebug-after ... 95 ...)
(edebug-after ... 124 ...)))))) (set-match-data
save-match-data-internal (quote evaporate))))
      tramp-dissect-file-name("/ssh:" t)
      tramp-find-foreign-file-name-handler("/ssh:")
      tramp-file-name-handler(substitute-in-file-name "/ssh:")
      substitute-in-file-name("/ssh:")
      apply(substitute-in-file-name "/ssh:")
      tramp-completion-run-real-handler(substitute-in-file-name ("/ssh:"))
      tramp-completion-file-name-handler(substitute-in-file-name "/ssh:")
      substitute-in-file-name("/ssh:")
      byte-code("\306\307 !\310\b!\311 d\312\x19\x1a^[\x1c\x1d\f\203?\f\n=\204*
    \fT\x1e\x12\211\x1d\313\314\315\217\232*\204?\f\v=\204\215
    \f\x1e\x12\211\x1d\313\314\315\217\232*\204\215\vT\nW\204f\nTdW\203\206
    \nT\x1e\x12\211\x1d\313\314\315\217\232*\203\206\nT\x13d\211\x12\203\206\v\n\\\316\245\x14
    \f\x1e\x12\211\x1d\313\314\315\217\232*\203\201\f\211\x13\202@\f\x12\202?\317\b\311
\v#\210\320\321!-\207" [rfn-eshadow-overlay non-essential end start mid
goal substitute-in-file-name minibuffer-contents overlay-end
minibuffer-prompt-end t nil (byte-code "\301\302\bd\"!\207" [pos
substitute-in-file-name buffer-substring-no-properties] 4) ((error)) 2
move-overlay run-hooks rfn-eshadow-update-overlay-hook pos] 6)
      rfn-eshadow-update-overlay()
      read-from-minibuffer("Find file: "
"/Applications/Emacs.app/Contents/Resources/lisp/net/" (keymap (keymap
(32)) keymap (10 . minibuffer-complete-and-exit) (13 .
minibuffer-complete-and-exit) keymap (menu-bar keymap (minibuf
"Minibuf" keymap (tab menu-item "Complete" minibuffer-complete :help
"Complete as far as possible") (space menu-item "Complete Word"
minibuffer-complete-word :help "Complete at most one word") (63
menu-item "List Completions" minibuffer-completion-help :help "Display
all possible completions") "Minibuf")) (27 keymap (118 .
switch-to-completions)) (prior . switch-to-completions) (63 .
minibuffer-completion-help) (32 . minibuffer-complete-word) (9 .
minibuffer-complete) keymap (menu-bar keymap (minibuf "Minibuf" keymap
(previous menu-item "Previous History Item" previous-history-element
:help "Put previous minibuffer history element in the minibuffer")
(next menu-item "Next History Item" next-history-element :help "Put
next minibuffer history element in the minibuffer") (isearch-backward
menu-item "Isearch History Backward" isearch-backward :help
"Incrementally search minibuffer history backward") (isearch-forward
menu-item "Isearch History Forward" isearch-forward :help
"Incrementally search minibuffer history forward") (return menu-item
"Enter" exit-minibuffer :key-sequence "
    " :help "Terminate input and exit minibuffer") (quit menu-item
"Quit" abort-recursive-edit :help "Abort input and exit minibuffer")
"Minibuf")) (10 . exit-minibuffer) (13 . exit-minibuffer) (7 .
abort-recursive-edit) (C-tab . file-cache-minibuffer-complete) (9 .
self-insert-command) (XF86Back . previous-history-element) (up .
previous-history-element) (prior . previous-history-element)
(XF86Forward . next-history-element) (down . next-history-element)
(next . next-history-element) (27 keymap (114 .
previous-matching-history-element) (115 .
next-matching-history-element) (112 . previous-history-element) (110 .
next-history-element))) nil file-name-history
"/Applications/Emacs.app/Contents/Resources/lisp/net/" nil)
      completing-read-default("Find file: " read-file-name-internal
file-exists-p confirm-after-completion
"/Applications/Emacs.app/Contents/Resources/lisp/net/"
file-name-history
"/Applications/Emacs.app/Contents/Resources/lisp/net/" nil)
      completing-read("Find file: " read-file-name-internal
file-exists-p confirm-after-completion
"/Applications/Emacs.app/Contents/Resources/lisp/net/"
file-name-history
"/Applications/Emacs.app/Contents/Resources/lisp/net/")
      read-file-name-default("Find file: " nil
"/Applications/Emacs.app/Contents/Resources/lisp/net/"
confirm-after-completion nil nil)
      read-file-name("Find file: " nil
"/Applications/Emacs.app/Contents/Resources/lisp/net/"
confirm-after-completion)
      find-file-read-args("Find file: " confirm-after-completion)
      byte-code("\300\301\302 \"\207" [find-file-read-args "Find file:
" confirm-nonexistent-file-or-buffer] 3)
      call-interactively(find-file nil nil)
      command-execute(find-file)

After I continue, it stops at the breakpoint after each character I type in:

    C-x C-f /ssh:vagrant@192.168.33.2

When I type the subsequent colon (:), tramp-dissect-file-name no
longer stops at the breakpoint.

It stops at the breakpoint again after I type RET in:

    C-x C-f /ssh:vagrant@192.168.33.2:/ RET

This time the backtrace looks different. I notice these two stack
frames that look suspicious:

      substitute-in-file-name("/ssh:vagrant@192.168.10.")
      completion--sifn-requote(27 "/ssh:vagrant@192.168.10.2:/")

Here's the complete backtrace:

    Debugger entered: nil
      apply(debug nil nil)
      edebug()
      (progn (edebug) (tramp-compat-user-error "Host name must not
match method `%s'" host))
      (progn (progn (edebug) (tramp-compat-user-error "Host name must
not match method `%s'" host)))
      (if (and (equal tramp-syntax (quote ftp)) (null method) (null
user) (member host (mapcar (quote car) tramp-methods)) (not
(tramp-completion-mode-p))) (progn (progn (edebug)
(tramp-compat-user-error "Host name must not match method `%s'"
host))))
      (progn (if (string-match tramp-prefix-ipv6-regexp host) (progn
(setq host (replace-match "" nil t host)))) (if (string-match
tramp-postfix-ipv6-regexp host) (progn (setq host (replace-match ""
nil t host)))) (if (and (equal tramp-syntax (quote ftp)) (null method)
(null user) (member host (mapcar (quote car) tramp-methods)) (not
(tramp-completion-mode-p))) (progn (progn (edebug)
(tramp-compat-user-error "Host name must not match method `%s'"
host)))))
      (if host (progn (if (string-match tramp-prefix-ipv6-regexp host)
(progn (setq host (replace-match "" nil t host)))) (if (string-match
tramp-postfix-ipv6-regexp host) (progn (setq host (replace-match ""
nil t host)))) (if (and (equal tramp-syntax (quote ftp)) (null method)
(null user) (member host (mapcar (quote car) tramp-methods)) (not
(tramp-completion-mode-p))) (progn (progn (edebug)
(tramp-compat-user-error "Host name must not match method `%s'"
host))))))
      (let ((method (match-string (nth 1 tramp-file-name-structure)
name)) (user (match-string (nth 2 tramp-file-name-structure) name))
(host (match-string (nth 3 tramp-file-name-structure) name))
(localname (match-string (nth 4 tramp-file-name-structure) name)) (hop
(match-string (nth 5 tramp-file-name-structure) name))) (if host
(progn (if (string-match tramp-prefix-ipv6-regexp host) (progn (setq
host (replace-match "" nil t host)))) (if (string-match
tramp-postfix-ipv6-regexp host) (progn (setq host (replace-match ""
nil t host)))) (if (and (equal tramp-syntax (quote ftp)) (null method)
(null user) (member host (mapcar (quote car) tramp-methods)) (not
(tramp-completion-mode-p))) (progn (progn (edebug)
(tramp-compat-user-error "Host name must not match method `%s'"
host)))))) (if nodefault (vector method user host localname hop)
(vector (tramp-find-method method user host) (tramp-find-user method
user host) (tramp-find-host method user host) localname hop)))
      (let ((match (string-match (nth 0 tramp-file-name-structure)
name))) (if match nil (tramp-compat-user-error "Not a Tramp file name:
%s" name)) (let ((method (match-string (nth 1
tramp-file-name-structure) name)) (user (match-string (nth 2
tramp-file-name-structure) name)) (host (match-string (nth 3
tramp-file-name-structure) name)) (localname (match-string (nth 4
tramp-file-name-structure) name)) (hop (match-string (nth 5
tramp-file-name-structure) name))) (if host (progn (if (string-match
tramp-prefix-ipv6-regexp host) (progn (setq host (replace-match "" nil
t host)))) (if (string-match tramp-postfix-ipv6-regexp host) (progn
(setq host (replace-match "" nil t host)))) (if (and (equal
tramp-syntax (quote ftp)) (null method) (null user) (member host
(mapcar ... tramp-methods)) (not (tramp-completion-mode-p))) (progn
(progn (edebug) (tramp-compat-user-error "Host name must not match
method `%s'" host)))))) (if nodefault (vector method user host
localname hop) (vector (tramp-find-method method user host)
(tramp-find-user method user host) (tramp-find-host method user host)
localname hop))))
      (progn (let ((match (string-match (nth 0
tramp-file-name-structure) name))) (if match nil
(tramp-compat-user-error "Not a Tramp file name: %s" name)) (let
((method (match-string (nth 1 tramp-file-name-structure) name)) (user
(match-string (nth 2 tramp-file-name-structure) name)) (host
(match-string (nth 3 tramp-file-name-structure) name)) (localname
(match-string (nth 4 tramp-file-name-structure) name)) (hop
(match-string (nth 5 tramp-file-name-structure) name))) (if host
(progn (if (string-match tramp-prefix-ipv6-regexp host) (progn (setq
host ...))) (if (string-match tramp-postfix-ipv6-regexp host) (progn
(setq host ...))) (if (and (equal tramp-syntax ...) (null method)
(null user) (member host ...) (not ...)) (progn (progn ... ...)))))
(if nodefault (vector method user host localname hop) (vector
(tramp-find-method method user host) (tramp-find-user method user
host) (tramp-find-host method user host) localname hop)))))
      (unwind-protect (progn (let ((match (string-match (nth 0
tramp-file-name-structure) name))) (if match nil
(tramp-compat-user-error "Not a Tramp file name: %s" name)) (let
((method (match-string (nth 1 tramp-file-name-structure) name)) (user
(match-string (nth 2 tramp-file-name-structure) name)) (host
(match-string (nth 3 tramp-file-name-structure) name)) (localname
(match-string (nth 4 tramp-file-name-structure) name)) (hop
(match-string (nth 5 tramp-file-name-structure) name))) (if host
(progn (if (string-match tramp-prefix-ipv6-regexp host) (progn ...))
(if (string-match tramp-postfix-ipv6-regexp host) (progn ...)) (if
(and ... ... ... ... ...) (progn ...)))) (if nodefault (vector method
user host localname hop) (vector (tramp-find-method method user host)
(tramp-find-user method user host) (tramp-find-host method user host)
localname hop))))) (set-match-data save-match-data-internal (quote
evaporate)))
      (let ((save-match-data-internal (match-data))) (unwind-protect
(progn (let ((match (string-match (nth 0 tramp-file-name-structure)
name))) (if match nil (tramp-compat-user-error "Not a Tramp file name:
%s" name)) (let ((method (match-string ... name)) (user (match-string
... name)) (host (match-string ... name)) (localname (match-string ...
name)) (hop (match-string ... name))) (if host (progn (if ... ...) (if
... ...) (if ... ...))) (if nodefault (vector method user host
localname hop) (vector (tramp-find-method method user host)
(tramp-find-user method user host) (tramp-find-host method user host)
localname hop))))) (set-match-data save-match-data-internal (quote
evaporate))))
      tramp-dissect-file-name("/ssh:vagrant@192.168.10." t)
      tramp-find-foreign-file-name-handler("/ssh:vagrant@192.168.10.")
      tramp-file-name-handler(substitute-in-file-name
"/ssh:vagrant@192.168.10.")
      substitute-in-file-name("/ssh:vagrant@192.168.10.")
      apply(substitute-in-file-name "/ssh:vagrant@192.168.10.")
      tramp-completion-run-real-handler(substitute-in-file-name
("/ssh:vagrant@192.168.10."))
      tramp-completion-file-name-handler(substitute-in-file-name
"/ssh:vagrant@192.168.10.")
      substitute-in-file-name("/ssh:vagrant@192.168.10.")
      completion--sifn-requote(27 "/ssh:vagrant@192.168.10.2:/")
      completion--twq-try("/ssh:vagrant@192.168.10.2:/"
"/ssh:vagrant@192.168.10.2:/" "/ssh:vagrant@192.168.10.2:/" 0
substitute-in-file-name completion--sifn-requote)
      completion--file-name-table("/ssh:vagrant@192.168.10.2:/"
file-exists-p nil)
      complete-with-action(nil completion--file-name-table
"/ssh:vagrant@192.168.10.2:/" file-exists-p)
      #[257 "\303\302\x02\300\301$\207" ["/ssh:vagrant@192.168.10.2:/"
file-exists-p nil complete-with-action] 6 "\n\n(fn
TABLE)"](completion--file-name-table)
      funcall(#[257 "\303\302\x02\300\301$\207"
["/ssh:vagrant@192.168.10.2:/" file-exists-p nil complete-with-action]
6 "\n\n(fn TABLE)"] completion--file-name-table)
      (setq res (funcall fun (car (prog1 xs (setq xs (cdr xs))))))
      (condition-case err (setq res (funcall fun (car (prog1 xs (setq
xs (cdr xs)))))) (error (if firsterror nil (setq firsterror err))
nil))
      (while (and (not res) xs) (condition-case err (setq res (funcall
fun (car (prog1 xs (setq xs (cdr xs)))))) (error (if firsterror nil
(setq firsterror err)) nil)))
      (let ((firsterror nil) res) (while (and (not res) xs)
(condition-case err (setq res (funcall fun (car (prog1 xs (setq xs
...))))) (error (if firsterror nil (setq firsterror err)) nil))) (or
res (if firsterror (signal (car firsterror) (cdr firsterror)))))
      completion--some(#[257 "\303\302\x02\300\301$\207"
["/ssh:vagrant@192.168.10.2:/" file-exists-p nil complete-with-action]
6 "\n\n(fn TABLE)"] (completion--embedded-envvar-table
completion--file-name-table))
      read-file-name-internal("/ssh:vagrant@192.168.10.2:/" file-exists-p nil)
      try-completion("/ssh:vagrant@192.168.10.2:/"
read-file-name-internal file-exists-p)
      minibuffer--complete-and-exit(#[0
"\301\302\303D\304\302\305\301EDC\217\211\306>\203\x17\307
\202/\211\310=\203.\b\204&\307 \202/\311\312!\210\313\202/\313\207"
[minibuffer-completion-confirm err funcall #[0 "\300\301\302\"\207"
[completion--do-completion nil expect-exact] 3 "\n\n(fn)"] error #[257
"\300\207" [1] 2 "\n\n(fn IGNORED)"] (1 3) exit-minibuffer 7
minibuffer-message "Confirm" nil] 6 "\n\n(fn)"])
      minibuffer-complete-and-exit()
      call-interactively(minibuffer-complete-and-exit nil nil)
      command-execute(minibuffer-complete-and-exit)
      read-from-minibuffer("Find file: "
"/Applications/Emacs.app/Contents/Resources/lisp/net/" (keymap (keymap
(32)) keymap (10 . minibuffer-complete-and-exit) (13 .
minibuffer-complete-and-exit) keymap (menu-bar keymap (minibuf
"Minibuf" keymap (tab menu-item "Complete" minibuffer-complete :help
"Complete as far as possible") (space menu-item "Complete Word"
minibuffer-complete-word :help "Complete at most one word") (63
menu-item "List Completions" minibuffer-completion-help :help "Display
all possible completions") "Minibuf")) (27 keymap (118 .
switch-to-completions)) (prior . switch-to-completions) (63 .
minibuffer-completion-help) (32 . minibuffer-complete-word) (9 .
minibuffer-complete) keymap (menu-bar keymap (minibuf "Minibuf" keymap
(previous menu-item "Previous History Item" previous-history-element
:help "Put previous minibuffer history element in the minibuffer")
(next menu-item "Next History Item" next-history-element :help "Put
next minibuffer history element in the minibuffer") (isearch-backward
menu-item "Isearch History Backward" isearch-backward :help
"Incrementally search minibuffer history backward") (isearch-forward
menu-item "Isearch History Forward" isearch-forward :help
"Incrementally search minibuffer history forward") (return menu-item
"Enter" exit-minibuffer :key-sequence "
    " :help "Terminate input and exit minibuffer") (quit menu-item
"Quit" abort-recursive-edit :help "Abort input and exit minibuffer")
"Minibuf")) (10 . exit-minibuffer) (13 . exit-minibuffer) (7 .
abort-recursive-edit) (C-tab . file-cache-minibuffer-complete) (9 .
self-insert-command) (XF86Back . previous-history-element) (up .
previous-history-element) (prior . previous-history-element)
(XF86Forward . next-history-element) (down . next-history-element)
(next . next-history-element) (27 keymap (114 .
previous-matching-history-element) (115 .
next-matching-history-element) (112 . previous-history-element) (110 .
next-history-element))) nil file-name-history
"/Applications/Emacs.app/Contents/Resources/lisp/net/" nil)
      completing-read-default("Find file: " read-file-name-internal
file-exists-p confirm-after-completion
"/Applications/Emacs.app/Contents/Resources/lisp/net/"
file-name-history
"/Applications/Emacs.app/Contents/Resources/lisp/net/" nil)
      completing-read("Find file: " read-file-name-internal
file-exists-p confirm-after-completion
"/Applications/Emacs.app/Contents/Resources/lisp/net/"
file-name-history
"/Applications/Emacs.app/Contents/Resources/lisp/net/")
      read-file-name-default("Find file: " nil
"/Applications/Emacs.app/Contents/Resources/lisp/net/"
confirm-after-completion nil nil)
      read-file-name("Find file: " nil
"/Applications/Emacs.app/Contents/Resources/lisp/net/"
confirm-after-completion)
      find-file-read-args("Find file: " confirm-after-completion)
      byte-code("\300\301\302 \"\207" [find-file-read-args "Find file:
" confirm-nonexistent-file-or-buffer] 3)
      call-interactively(find-file nil nil)
      command-execute(find-file)

-- 
Matt McClure
http://matthewlmcclure.com
http://www.mapmyfitness.com/profile/matthewlmcclure

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: TRAMP: Host name must not match method ...
  2013-08-17 17:18   ` Matt McClure
@ 2013-08-17 17:41     ` Matt McClure
  2013-08-19 10:25       ` Michael Albinus
  2013-08-19 12:07     ` Michael Albinus
  1 sibling, 1 reply; 9+ messages in thread
From: Matt McClure @ 2013-08-17 17:41 UTC (permalink / raw)
  To: Michael Albinus; +Cc: tramp-devel, emacs-devel

I can work around the problem by commenting out the
tramp-compat-user-error, FWIW.

    diff -u --label
/Applications/Emacs.app/Contents/Resources/lisp/net/tramp.el.gz\~
--label /Applications/Emacs.app/Contents/Resources/lisp/net/tramp.el.gz
/var/folders/_d/5p0jtv397qs73qr_frd6bw180000gn/T/jka-com16088D-O
/var/folders/_d/5p0jtv397qs73qr_frd6bw180000gn/T/jka-com16088dSb
    --- /Applications/Emacs.app/Contents/Resources/lisp/net/tramp.el.gz~
    +++ /Applications/Emacs.app/Contents/Resources/lisp/net/tramp.el.gz
    @@ -1283,11 +1283,12 @@
         (setq host (replace-match "" nil t host)))
       (when (string-match tramp-postfix-ipv6-regexp host)
         (setq host (replace-match "" nil t host)))
    -  (when (and (equal tramp-syntax 'ftp) (null method) (null user)
    -     (member host (mapcar 'car tramp-methods))
    -     (not (tramp-completion-mode-p)))
    -    (tramp-compat-user-error
    -     "Host name must not match method `%s'" host)))
    +  ;; (when (and (equal tramp-syntax 'ftp) (null method) (null user)
    +  ;;     (member host (mapcar 'car tramp-methods))
    +  ;;     (not (tramp-completion-mode-p)))
    +  ;;   (tramp-compat-user-error
    +  ;;    "Host name must not match method `%s'" host)))
    +  )
      (if nodefault
         (vector method user host localname hop)
       (vector

    Diff finished.  Sat Aug 17 13:39:30 2013


-- 
Matt McClure
http://matthewlmcclure.com
http://www.mapmyfitness.com/profile/matthewlmcclure

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: TRAMP: Host name must not match method ...
  2013-08-17 17:41     ` Matt McClure
@ 2013-08-19 10:25       ` Michael Albinus
  0 siblings, 0 replies; 9+ messages in thread
From: Michael Albinus @ 2013-08-19 10:25 UTC (permalink / raw)
  To: Matt McClure; +Cc: tramp-devel, emacs-devel

Matt McClure <matthewlmcclure@gmail.com> writes:

> I can work around the problem by commenting out the
> tramp-compat-user-error, FWIW.

For sure. But this error message was added by intention, see
<http://debbugs.gnu.org/cgi/bugreport.cgi?bug=13900#15> for discussion.

Best regards, Michael.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: TRAMP: Host name must not match method ...
  2013-08-17 17:18   ` Matt McClure
  2013-08-17 17:41     ` Matt McClure
@ 2013-08-19 12:07     ` Michael Albinus
  2013-08-20  2:38       ` Matt McClure
  1 sibling, 1 reply; 9+ messages in thread
From: Michael Albinus @ 2013-08-19 12:07 UTC (permalink / raw)
  To: Matt McClure; +Cc: tramp-devel, emacs-devel

Matt McClure <matthewlmcclure@gmail.com> writes:

Hi Matt,

> Here's the backtrace the first time it stops:

[...]

>       tramp-dissect-file-name("/ssh:" t)
>       tramp-find-foreign-file-name-handler("/ssh:")
>       tramp-file-name-handler(substitute-in-file-name "/ssh:")
>       substitute-in-file-name("/ssh:")
>       apply(substitute-in-file-name "/ssh:")
>       tramp-completion-run-real-handler(substitute-in-file-name ("/ssh:"))
>       tramp-completion-file-name-handler(substitute-in-file-name "/ssh:")
>       substitute-in-file-name("/ssh:")

[...]

>       rfn-eshadow-update-overlay()

Strange. The user error in `tramp-dissect-file-name' is raised only when
`tramp-completion-mode-p' returns nil. That function checks (beside
other things) the variable `non-essential', which is bound to t inside
`rfn-eshadow-update-overlay'. So there shouldn't be any problem.

Could you, please, check whether you might have shadow lisp files? Try
"M-x list-load-path-shadows".

In the debugger, you might also check the value of `non-essential', when
you pass `rfn-eshadow-update-overlay' and the break point.

>     C-x C-f /ssh:vagrant@192.168.33.2:/ RET
>
> This time the backtrace looks different. I notice these two stack
> frames that look suspicious:
>
>       substitute-in-file-name("/ssh:vagrant@192.168.10.")
>       completion--sifn-requote(27 "/ssh:vagrant@192.168.10.2:/")

Here I don't see exactly what happens; I'm not so familiar with the
completion code in minibuffer.el. But maybe this is caused by the same
reason as the first break, let's see.

Best regards, Michael.



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: TRAMP: Host name must not match method ...
  2013-08-19 12:07     ` Michael Albinus
@ 2013-08-20  2:38       ` Matt McClure
  2013-08-20 10:06         ` Michael Albinus
  0 siblings, 1 reply; 9+ messages in thread
From: Matt McClure @ 2013-08-20  2:38 UTC (permalink / raw)
  To: Michael Albinus; +Cc: tramp-devel, emacs-devel

On Mon, Aug 19, 2013 at 8:07 AM, Michael Albinus <michael.albinus@gmx.de> wrote:
> Matt McClure <matthewlmcclure@gmail.com> writes:
>
>> Here's the backtrace the first time it stops:
>
> [...]
>
>>       rfn-eshadow-update-overlay()
>
> Strange. The user error in `tramp-dissect-file-name' is raised only when
> `tramp-completion-mode-p' returns nil. That function checks (beside
> other things) the variable `non-essential', which is bound to t inside
> `rfn-eshadow-update-overlay'. So there shouldn't be any problem.

True. The first backtrace from my previous message is in a scenario
where the error doesn't surface to the user. The second backtrace,
which does not include `rfn-eshadow-update-overlay', is the failure
case.

> Could you, please, check whether you might have shadow lisp files? Try
> "M-x list-load-path-shadows".

    No Emacs Lisp load-path shadowings were found

> In the debugger, you might also check the value of `non-essential', when
> you pass `rfn-eshadow-update-overlay' and the break point.

At the breakpoint in the failure case, and actually in the success cases also:

    non-essential is a variable defined in `simple.el'.
    Its value is nil

>>     C-x C-f /ssh:vagrant@192.168.33.2:/ RET
>>
>> This time the backtrace looks different. I notice these two stack
>> frames that look suspicious:
>>
>>       substitute-in-file-name("/ssh:vagrant@192.168.10.")
>>       completion--sifn-requote(27 "/ssh:vagrant@192.168.10.2:/")
>
> Here I don't see exactly what happens; I'm not so familiar with the
> completion code in minibuffer.el. But maybe this is caused by the same
> reason as the first break, let's see.

Comparing rfn-eshadow-update-overlay to completion--sifn-requote, I
notice that the former wraps its call to substitute-in-file-name with
condition-case, whereas the latter does not. I believe the user-error
is signaled in both cases, but in the former it's handled by
condition-case, whereas in the latter nothing handles it.

I'm able to work around the problem with:

diff -u --label
/Applications/Emacs.app/Contents/Resources/lisp/minibuffer.el.gz\~
--label /Applications/Emacs.app/Contents/Resources/lisp/minibuffer.el.gz
/var/folders/_d/5p0jtv397qs73qr_frd6bw180000gn/T/jka-com874eUK
/var/folders/_d/5p0jtv397qs73qr_frd6bw180000gn/T/jka-com8744oW
--- /Applications/Emacs.app/Contents/Resources/lisp/minibuffer.el.gz~
+++ /Applications/Emacs.app/Contents/Resources/lisp/minibuffer.el.gz
@@ -2256,13 +2256,15 @@
     ;; Second assumptions: If qpos is far from the end this can be a bit slow,
     ;; so we speed it up by doing a first loop that skips a word at a time.
     ;; This word-sized loop is careful not to cut in the middle of env-vars.
-    (while (let ((boundary (string-match "\\(\\$+{?\\)?\\w+\\W*\\'" qstr)))
-             (and boundary
-                  (progn
-                    (setq qprefix (substring qstr 0 boundary))
-                    (string-prefix-p uprefix
-                                   (substitute-in-file-name qprefix)))))
-      (setq qstr qprefix))
+    (condition-case nil
+ (while (let ((boundary (string-match "\\(\\$+{?\\)?\\w+\\W*\\'" qstr)))
+ (and boundary
+      (progn
+ (setq qprefix (substring qstr 0 boundary))
+ (string-prefix-p uprefix
+ (substitute-in-file-name qprefix)))))
+  (setq qstr qprefix))
+      (error nil))
     (let ((qpos (length qstr)))
       (while (and (> qpos 0)
                   (string-prefix-p uprefix

Diff finished.  Mon Aug 19 22:29:17 2013

But it seems that there must be a copy of minibuffer.el compiled into
the executable (?). Even though the completion--sifn-requote is
already defined, before my copy becomes active, I have to explicitly
(load-library "minibuffer").

-- 
Matt McClure
http://matthewlmcclure.com
http://www.mapmyfitness.com/profile/matthewlmcclure

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: TRAMP: Host name must not match method ...
  2013-08-20  2:38       ` Matt McClure
@ 2013-08-20 10:06         ` Michael Albinus
  2013-08-27 20:01           ` Matt McClure
  0 siblings, 1 reply; 9+ messages in thread
From: Michael Albinus @ 2013-08-20 10:06 UTC (permalink / raw)
  To: Matt McClure; +Cc: tramp-devel, emacs-devel

Matt McClure <matthewlmcclure@gmail.com> writes:

Hi Matt,

>> Strange. The user error in `tramp-dissect-file-name' is raised only when
>> `tramp-completion-mode-p' returns nil. That function checks (beside
>> other things) the variable `non-essential', which is bound to t inside
>> `rfn-eshadow-update-overlay'. So there shouldn't be any problem.
>
> True. The first backtrace from my previous message is in a scenario
> where the error doesn't surface to the user. The second backtrace,
> which does not include `rfn-eshadow-update-overlay', is the failure
> case.

For the first backtrace, I could fix it (binding of `non-essential' was
too late).

The second problem you have shown is still not reproducible
locally. Anyway, the patch in `completion--sifn-requote' below uses the
same logic as in `rfn-eshadow-update-overlay', and should fix it for you
as well.

> Comparing rfn-eshadow-update-overlay to completion--sifn-requote, I
> notice that the former wraps its call to substitute-in-file-name with
> condition-case, whereas the latter does not. I believe the user-error
> is signaled in both cases, but in the former it's handled by
> condition-case, whereas in the latter nothing handles it.

Right. Except that the second case does not happen to me.

> But it seems that there must be a copy of minibuffer.el compiled into
> the executable (?). Even though the completion--sifn-requote is
> already defined, before my copy becomes active, I have to explicitly
> (load-library "minibuffer").

Yes. Some of the most used lisp packages are dumped into the Emacs
binary. You must recompile Emacs (or reload minibuffer.el, as you do).

The following patch is submitted to Emacs trunk. Please check, whether
it fixes the problem for you, especially in `completion--sifn-requote'.

--8<---------------cut here---------------start------------->8---
=== modified file 'lisp/ChangeLog'
*** lisp/ChangeLog	2013-08-17 10:20:15 +0000
--- lisp/ChangeLog	2013-08-20 09:50:38 +0000
***************
*** 1,3 ****
--- 1,10 ----
+ 2013-08-20  Michael Albinus  <michael.albinus@gmx.de>
+ 
+ 	* minibuffer.el (completion--sifn-requote): Bind `non-essential'.
+ 
+ 	* rfn-eshadow.el (rfn-eshadow-update-overlay): Move binding of
+ 	`non-essential' up.
+ 
  2013-08-17  Michael Albinus  <michael.albinus@gmx.de>
  
  	* net/tramp.el:

=== modified file 'lisp/minibuffer.el'
*** lisp/minibuffer.el	2013-07-30 20:42:15 +0000
--- lisp/minibuffer.el	2013-08-20 09:29:27 +0000
***************
*** 2246,2252 ****
    ;; - Cygwin (substitute-in-file-name "C:\bin") => "/usr/bin"
    ;;          (substitute-in-file-name "C:\") => "/"
    ;;          (substitute-in-file-name "C:\bi") => "/bi"
!   (let* ((ustr (substitute-in-file-name qstr))
           (uprefix (substring ustr 0 upos))
           qprefix)
      ;; Main assumption: nothing after qpos should affect the text before upos,
--- 2246,2253 ----
    ;; - Cygwin (substitute-in-file-name "C:\bin") => "/usr/bin"
    ;;          (substitute-in-file-name "C:\") => "/"
    ;;          (substitute-in-file-name "C:\bi") => "/bi"
!   (let* ((non-essential t)
! 	 (ustr (substitute-in-file-name qstr))
           (uprefix (substring ustr 0 upos))
           qprefix)
      ;; Main assumption: nothing after qpos should affect the text before upos,

=== modified file 'lisp/rfn-eshadow.el'
*** lisp/rfn-eshadow.el	2013-01-01 09:11:05 +0000
--- lisp/rfn-eshadow.el	2013-08-20 08:57:50 +0000
***************
*** 176,186 ****
  `file-name-shadow-mode'; the minibuffer should have already
  been set up by `rfn-eshadow-setup-minibuffer'."
    (condition-case nil
!       (let ((goal (substitute-in-file-name (minibuffer-contents)))
!             (mid (overlay-end rfn-eshadow-overlay))
!             (start (minibuffer-prompt-end))
!             (end (point-max))
! 	    (non-essential t))
          (unless
              ;; Catch the common case where the shadow does not need to move.
              (and mid
--- 176,186 ----
  `file-name-shadow-mode'; the minibuffer should have already
  been set up by `rfn-eshadow-setup-minibuffer'."
    (condition-case nil
!       (let* ((non-essential t)
! 	     (goal (substitute-in-file-name (minibuffer-contents)))
! 	     (mid (overlay-end rfn-eshadow-overlay))
! 	     (start (minibuffer-prompt-end))
! 	     (end (point-max)))
          (unless
              ;; Catch the common case where the shadow does not need to move.
              (and mid

--8<---------------cut here---------------end--------------->8---

Best regards, Michael.



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: TRAMP: Host name must not match method ...
  2013-08-20 10:06         ` Michael Albinus
@ 2013-08-27 20:01           ` Matt McClure
  0 siblings, 0 replies; 9+ messages in thread
From: Matt McClure @ 2013-08-27 20:01 UTC (permalink / raw)
  To: Michael Albinus; +Cc: tramp-devel, emacs-devel


[-- Attachment #1.1: Type: text/plain, Size: 5174 bytes --]

Hi Michael,

I see your changes in
http://bzr.savannah.gnu.org/lh/emacs/trunk/revision/113958

And Emacs-2013-08-27-114019-universal-10.6.8.dmg from
emacsformacosx.comworks for me.

Thanks!

Matt


On Tue, Aug 20, 2013 at 6:06 AM, Michael Albinus <michael.albinus@gmx.de>wrote:

> Matt McClure <matthewlmcclure@gmail.com> writes:
>
> Hi Matt,
>
> >> Strange. The user error in `tramp-dissect-file-name' is raised only when
> >> `tramp-completion-mode-p' returns nil. That function checks (beside
> >> other things) the variable `non-essential', which is bound to t inside
> >> `rfn-eshadow-update-overlay'. So there shouldn't be any problem.
> >
> > True. The first backtrace from my previous message is in a scenario
> > where the error doesn't surface to the user. The second backtrace,
> > which does not include `rfn-eshadow-update-overlay', is the failure
> > case.
>
> For the first backtrace, I could fix it (binding of `non-essential' was
> too late).
>
> The second problem you have shown is still not reproducible
> locally. Anyway, the patch in `completion--sifn-requote' below uses the
> same logic as in `rfn-eshadow-update-overlay', and should fix it for you
> as well.
>
> > Comparing rfn-eshadow-update-overlay to completion--sifn-requote, I
> > notice that the former wraps its call to substitute-in-file-name with
> > condition-case, whereas the latter does not. I believe the user-error
> > is signaled in both cases, but in the former it's handled by
> > condition-case, whereas in the latter nothing handles it.
>
> Right. Except that the second case does not happen to me.
>
> > But it seems that there must be a copy of minibuffer.el compiled into
> > the executable (?). Even though the completion--sifn-requote is
> > already defined, before my copy becomes active, I have to explicitly
> > (load-library "minibuffer").
>
> Yes. Some of the most used lisp packages are dumped into the Emacs
> binary. You must recompile Emacs (or reload minibuffer.el, as you do).
>
> The following patch is submitted to Emacs trunk. Please check, whether
> it fixes the problem for you, especially in `completion--sifn-requote'.
>
> --8<---------------cut here---------------start------------->8---
> === modified file 'lisp/ChangeLog'
> *** lisp/ChangeLog      2013-08-17 10:20:15 +0000
> --- lisp/ChangeLog      2013-08-20 09:50:38 +0000
> ***************
> *** 1,3 ****
> --- 1,10 ----
> + 2013-08-20  Michael Albinus  <michael.albinus@gmx.de>
> +
> +       * minibuffer.el (completion--sifn-requote): Bind `non-essential'.
> +
> +       * rfn-eshadow.el (rfn-eshadow-update-overlay): Move binding of
> +       `non-essential' up.
> +
>   2013-08-17  Michael Albinus  <michael.albinus@gmx.de>
>
>         * net/tramp.el:
>
> === modified file 'lisp/minibuffer.el'
> *** lisp/minibuffer.el  2013-07-30 20:42:15 +0000
> --- lisp/minibuffer.el  2013-08-20 09:29:27 +0000
> ***************
> *** 2246,2252 ****
>     ;; - Cygwin (substitute-in-file-name "C:\bin") => "/usr/bin"
>     ;;          (substitute-in-file-name "C:\") => "/"
>     ;;          (substitute-in-file-name "C:\bi") => "/bi"
> !   (let* ((ustr (substitute-in-file-name qstr))
>            (uprefix (substring ustr 0 upos))
>            qprefix)
>       ;; Main assumption: nothing after qpos should affect the text before
> upos,
> --- 2246,2253 ----
>     ;; - Cygwin (substitute-in-file-name "C:\bin") => "/usr/bin"
>     ;;          (substitute-in-file-name "C:\") => "/"
>     ;;          (substitute-in-file-name "C:\bi") => "/bi"
> !   (let* ((non-essential t)
> !        (ustr (substitute-in-file-name qstr))
>            (uprefix (substring ustr 0 upos))
>            qprefix)
>       ;; Main assumption: nothing after qpos should affect the text before
> upos,
>
> === modified file 'lisp/rfn-eshadow.el'
> *** lisp/rfn-eshadow.el 2013-01-01 09:11:05 +0000
> --- lisp/rfn-eshadow.el 2013-08-20 08:57:50 +0000
> ***************
> *** 176,186 ****
>   `file-name-shadow-mode'; the minibuffer should have already
>   been set up by `rfn-eshadow-setup-minibuffer'."
>     (condition-case nil
> !       (let ((goal (substitute-in-file-name (minibuffer-contents)))
> !             (mid (overlay-end rfn-eshadow-overlay))
> !             (start (minibuffer-prompt-end))
> !             (end (point-max))
> !           (non-essential t))
>           (unless
>               ;; Catch the common case where the shadow does not need to
> move.
>               (and mid
> --- 176,186 ----
>   `file-name-shadow-mode'; the minibuffer should have already
>   been set up by `rfn-eshadow-setup-minibuffer'."
>     (condition-case nil
> !       (let* ((non-essential t)
> !            (goal (substitute-in-file-name (minibuffer-contents)))
> !            (mid (overlay-end rfn-eshadow-overlay))
> !            (start (minibuffer-prompt-end))
> !            (end (point-max)))
>           (unless
>               ;; Catch the common case where the shadow does not need to
> move.
>               (and mid
>
> --8<---------------cut here---------------end--------------->8---
>
> Best regards, Michael.
>



-- 
Matt McClure
http://matthewlmcclure.com
http://www.mapmyfitness.com/profile/matthewlmcclure

[-- Attachment #1.2: Type: text/html, Size: 6802 bytes --]

[-- Attachment #2: Type: text/plain, Size: 144 bytes --]

_______________________________________________
Tramp-devel mailing list
Tramp-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/tramp-devel

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2013-08-27 20:01 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-08-14 13:06 TRAMP: Host name must not match method Matt McClure
2013-08-16 13:15 ` Michael Albinus
2013-08-17 17:18   ` Matt McClure
2013-08-17 17:41     ` Matt McClure
2013-08-19 10:25       ` Michael Albinus
2013-08-19 12:07     ` Michael Albinus
2013-08-20  2:38       ` Matt McClure
2013-08-20 10:06         ` Michael Albinus
2013-08-27 20:01           ` Matt McClure

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).