EshellElDoc

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

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.


CategoryEshell