#+title:    :term eshell
#+subtitle: The elisp shell that works everywhere
#+created:  February 20, 2017
#+since:    2.0.0

* Description :unfold:
This module provides additional features for the built-in [[https://www.gnu.org/software/emacs/manual/html_mono/eshell.html][Emacs Shell]]

The Emacs Shell or [[doom-package:eshell]] is a shell-like command interpreter implemented in
Emacs Lisp. It is an alternative to traditional shells such as =bash=, =zsh=,
=fish=, etc. that is built into Emacs and entirely cross-platform.

** Maintainers
- [[doom-user:][@hlissner]]

[[doom-contrib-maintainer:][Become a maintainer?]]

** Module flags
/This module has no flags./

** Packages
- [[doom-package:eshell-did-you-mean]]
- [[doom-package:eshell-up]]
- [[doom-package:eshell-z]]
- [[doom-package:esh-help]]
- [[doom-package:shrink-path]]
- if [[doom-module::completion company]]
  - [[doom-package:fish-completion]]
  - [[doom-package:bash-completion]]

** Hacks
- Even with ~fish-completion-fallback-on-bash-p~ non-nil, fish must be installed
  for bash completion to work. This has been circumvented.
- [[doom-package:eshell-did-you-mean]] does not work on first invocation, so we manually invoke
  it once.

** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./

* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]

This module requires either [[https://fishshell.com/][Fish shell]] or [[https://www.gnu.org/software/bash/][Bash]] for code completion.

* TODO Usage
#+begin_quote
 🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote

- Command completion with Company
- =fish=-style prompt with Git integration
- [[https://github.com/rupa/z][=z=]]-like directory jumping
- Command-not-found recommendations

* TODO Configuration
#+begin_quote
 🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote

** TERM name
By default, [[doom-package:eshell]] sets the =$TERM= variable to ~"xterm-256color"~, which helps
with rendering various colours. As eshell is /not/ a terminal emulator, these
will not always work 100%. Modifying ~eshell-term-name~ to your liking may help.

* Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]

* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]

* TODO Appendix
#+begin_quote
 🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote
