Function: term-dynamic-complete-as-filename

term-dynamic-complete-as-filename is a byte-compiled function defined in term.el.gz.

Signature

(term-dynamic-complete-as-filename)

Documentation

Dynamically complete at point as a filename.

See term-dynamic-complete-filename. Returns t if successful.

Source Code

;; Defined in /usr/src/emacs/lisp/term.el.gz
(defun term-dynamic-complete-as-filename ()
  "Dynamically complete at point as a filename.
See `term-dynamic-complete-filename'.  Returns t if successful."
  (let* ((completion-ignore-case nil)
	 (completion-ignored-extensions term-completion-fignore)
	 (success t)
	 (dirsuffix (cond ((not term-completion-addsuffix) "")
			  ((not (consp term-completion-addsuffix)) "/")
			  (t (car term-completion-addsuffix))))
	 (filesuffix (cond ((not term-completion-addsuffix) "")
			   ((not (consp term-completion-addsuffix)) " ")
			   (t (cdr term-completion-addsuffix))))
	 (filename (or (term-match-partial-filename) ""))
	 (pathdir (file-name-directory filename))
	 (pathnondir (file-name-nondirectory filename))
	 (directory (if pathdir (term-directory pathdir) default-directory))
	 (completion (file-name-completion pathnondir directory))
	 (mini-flag (eq (selected-window) (minibuffer-window))))
    (cond ((null completion)
           (message "No completions of %s" filename)
	   (setq success nil))
          ((eq completion t)            ; Means already completed "file".
           (when term-completion-addsuffix (insert " "))
           (or mini-flag (message "Sole completion")))
          ((string-equal completion "") ; Means completion on "directory/".
           (term-dynamic-list-filename-completions))
          (t                            ; Completion string returned.
           (let ((file (concat (file-name-as-directory directory) completion)))
             (insert (substring (directory-file-name completion)
                                (length pathnondir)))
             (cond ((symbolp (file-name-completion completion directory))
                    ;; We inserted a unique completion.
		    (insert (if (file-directory-p file) dirsuffix filesuffix))
                    (or mini-flag (message "Completed")))
                   ((and term-completion-recexact term-completion-addsuffix
                         (string-equal pathnondir completion)
                         (file-exists-p file))
                    ;; It's not unique, but user wants shortest match.
		    (insert (if (file-directory-p file) dirsuffix filesuffix))
                    (or mini-flag (message "Completed shortest")))
                   ((or term-completion-autolist
                        (string-equal pathnondir completion))
                    ;; It's not unique, list possible completions.
                    (term-dynamic-list-filename-completions))
                   (t
                    (or mini-flag (message "Partially completed")))))))
    success))