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))