Function: eshell-complete-user-reference
eshell-complete-user-reference is a byte-compiled function defined in
em-dirs.el.gz.
Signature
(eshell-complete-user-reference)
Documentation
If there is a user reference, complete it.
Source Code
;; Defined in /usr/src/emacs/lisp/eshell/em-dirs.el.gz
(defun eshell-complete-user-reference ()
"If there is a user reference, complete it."
(let ((arg (pcomplete-actual-arg)))
(when (string-match "\\`~[a-z]*\\'" arg)
(setq pcomplete-stub (substring arg 1)
pcomplete-last-completion-raw t)
(eshell-read-user-names)
(let ((names (pcomplete-uniquify-list
(mapcar (lambda (user)
(file-name-as-directory (cdr user)))
eshell-user-names))))
(throw 'pcomplete-completions
;; Provide a programmed completion table. This works
;; just like completing over the list of names, except
;; it always returns the completed string for
;; `try-completion', never `t'. That's because this is
;; only completing a directory name, and so the
;; completion isn't actually finished yet.
(lambda (string pred action)
(pcase action
('nil ; try-completion
(let ((result (try-completion string names pred)))
(if (eq result t) string result)))
('t ; all-completions
(all-completions string names pred))
('lambda ; test-completion
(test-completion string names pred))
('metadata
'(metadata (category . file)))
(`(boundaries . ,suffix)
`(boundaries 0 . ,(string-search "/" suffix))))))))))