From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Matt McClure Newsgroups: gmane.emacs.tramp,gmane.emacs.devel Subject: Re: TRAMP: Host name must not match method ... Date: Sat, 17 Aug 2013 13:18:04 -0400 Message-ID: References: <87y581dbfl.fsf@gmx.de> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Trace: ger.gmane.org 1376759892 17929 80.91.229.3 (17 Aug 2013 17:18:12 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sat, 17 Aug 2013 17:18:12 +0000 (UTC) Cc: tramp-devel@gnu.org, emacs-devel@gnu.org To: Michael Albinus Original-X-From: tramp-devel-bounces+get-tramp-devel=m.gmane.org@gnu.org Sat Aug 17 19:18:17 2013 Return-path: Envelope-to: get-tramp-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1VAk8k-0001DK-Rv for get-tramp-devel@m.gmane.org; Sat, 17 Aug 2013 19:18:15 +0200 Original-Received: from localhost ([::1]:36557 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VAk8k-00013s-AI for get-tramp-devel@m.gmane.org; Sat, 17 Aug 2013 13:18:14 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:33831) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VAk8g-0000vN-0y for tramp-devel@gnu.org; Sat, 17 Aug 2013 13:18:13 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VAk8c-0004xR-0h for tramp-devel@gnu.org; Sat, 17 Aug 2013 13:18:09 -0400 Original-Received: from mail-pd0-x22d.google.com ([2607:f8b0:400e:c02::22d]:56664) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VAk8b-0004wx-KE; Sat, 17 Aug 2013 13:18:05 -0400 Original-Received: by mail-pd0-f173.google.com with SMTP id p10so3395114pdj.4 for ; Sat, 17 Aug 2013 10:18:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; bh=C2ORwICTBdZ4/W22NMgy0rquHxoSbcIH6OXaBey8sto=; b=luXr8UlA4xZ/tcmhjYi67KRXAq3hfvcKt0hDAGT7dY2zRB5XlXDn99CJzAypS6KSyC iOouqRGqhdP/hzl8kljlhsMJBAzynBPFNZhlCjBgIGTsMSgsZBStQv7auNrmsRQR++gQ XNKhMGUS2vzHfY9btwOYY0eEH4IuoxS94sO/tbqW+OVeVy4hFO2/cVd7qu5CZeUmFjDQ S9gf/doG3t5CcoJ7JcK14riVXh8BFSqCVoIDOWC9lxxcNldjCdSZtppnPn7asMqHaLEb mIBD3OOdALOpOkcG47OwdrRmxbgrpjZJ2YdZrbY9YcfVQatXnvZl5XXr28KZLUaaTADy muaw== X-Received: by 10.66.150.138 with SMTP id ui10mr3865065pab.19.1376759884247; Sat, 17 Aug 2013 10:18:04 -0700 (PDT) Original-Received: by 10.69.0.35 with HTTP; Sat, 17 Aug 2013 10:18:04 -0700 (PDT) In-Reply-To: <87y581dbfl.fsf@gmx.de> X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2607:f8b0:400e:c02::22d X-BeenThere: tramp-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: tramp-devel-bounces+get-tramp-devel=m.gmane.org@gnu.org Original-Sender: tramp-devel-bounces+get-tramp-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.tramp:8389 gmane.emacs.devel:162845 Archived-At: On Fri, Aug 16, 2013 at 9:15 AM, Michael Albinus wrote: > Matt McClure 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!\311 d\312\f\203?\f\n=\204* \fT\211\313\314\315\217\232*\204?\f =\204\215 \f\211\313\314\315\217\232*\204\215 T\nW\204f\nTdW\203\206 \nT\211\313\314\315\217\232*\203\206\nTd\211\203\206 \n\\\316\245 \f\211\313\314\315\217\232*\203\201\f\211\202@\f\202?\317\311 #\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\302d\"!\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\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\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\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\307 \202/\211\310=\203.\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