ElDoc will print some information in the echo area for the elisp function point is in. This is helpful while coding.
Perhaps something like ah-tty (See http://ah-tty.sourceforge.net/) might be done for eshell by combining eshell with eldoc-mode. It already works if the commands you type look like EmacsLisp. If you use an open-parenthesis as in the following example, you will get the appropriate help in the echo area:
c:/Internet/tmp $ (find-file
If you want it to work without the open-parenthesis as well, try this advice. You can put it into your ~/.emacs file, too, if you like.
(defadvice eldoc-fnsym-in-current-sexp (around eldoc-fnsym-in-current-sexp-or-command activate) ad-do-it (if (and (not ad-return-value) (eq major-mode 'eshell-mode)) (save-excursion (goto-char eshell-last-output-end) (setq ad-return-value (eldoc-current-symbol)))))
A similar solution that works with emacs 24 and supports eshell aliases – RussellSim
(defadvice eldoc-current-symbol (around eldoc-current-symbol activate) ad-do-it (if (and (not ad-return-value) (eq major-mode 'eshell-mode)) (save-excursion (goto-char eshell-last-output-end) (let ((esym (eshell-find-alias-function (current-word))) (sym (intern-soft (current-word)))) (setq ad-return-value (or esym sum))))))
When in eshell, use M-x eldoc-mode to activate it. Now the following will work as well:
c:/Internet/tmp $ find-file
Unfortunately, the advice doesn’t really parse the command. Thus, all the eshell magic is not working. Consider the “eshell/” prefix, for example. This will work:
c:/Internet/tmp $ eshell/ls
But this will not:
c:/Internet/tmp $ ls
Furthermore, the eshell/ls example shows that the argument list is often not really that helpful.