Function: tramp-completion-handle-file-exists-p

tramp-completion-handle-file-exists-p is a byte-compiled function defined in tramp.el.gz.

Signature

(tramp-completion-handle-file-exists-p FILENAME)

Documentation

Like file-exists-p for partial Tramp files.

Source Code

;; Defined in /usr/src/emacs/lisp/net/tramp.el.gz
(defun tramp-completion-handle-file-exists-p (filename)
  "Like `file-exists-p' for partial Tramp files."
  ;; We need special handling only when a method is needed.  Then we
  ;; regard all files "/method:" or "/[method/" as existent, if
  ;; "method" is a valid Tramp method.  And we regard all files
  ;; "/method:user@", "/user@" or "/[method/user@" as existent, if
  ;; "user@" is a valid file name completion.  Host completion is
  ;; performed in the respective backen operation.
  (or (and (cond
            ;; Completion styles like `flex' and `substring' check for
            ;; the file name "/".  This does exist.
            ((string-equal filename "/"))
            ;; Is it a valid method?
            ((and (not (string-empty-p tramp-postfix-method-format))
                  (string-match
                   (tramp-compat-rx
                    (regexp tramp-prefix-regexp)
		    (* (regexp tramp-remote-file-name-spec-regexp)
		       (regexp tramp-postfix-hop-regexp))
                    (group-n 9 (regexp tramp-method-regexp))
                    (? (regexp tramp-postfix-method-regexp))
                    eos)
                   filename))
             (assoc (match-string 9 filename) tramp-methods))
            ;; Is it a valid user?
            ((string-match
	      (tramp-compat-rx
               (regexp tramp-prefix-regexp)
	       (* (regexp tramp-remote-file-name-spec-regexp)
		  (regexp tramp-postfix-hop-regexp))
               (group-n 10
		 (regexp tramp-method-regexp)
		 (regexp tramp-postfix-method-regexp))
	       (group-n 11
		 (regexp tramp-user-regexp)
		 (regexp tramp-postfix-user-regexp))
               eos)
              filename)
	     (member
	      (match-string 11 filename)
	      (file-name-all-completions
	       "" (concat tramp-prefix-format (match-string 10 filename))))))
	   t)

      (tramp-run-real-handler #'file-exists-p (list filename))))