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