#+TITLE: Shell Configuration #+PROPERTY: header-args :tangle ~/.emacs.d/config.el * Shell ** Bash completion #+begin_src elisp (use-package bash-completion :config (require 'bash-completion) (bash-completion-setup) ) #+end_src #+begin_src elisp (defvar shell-dynamic-complete-functions t) #+end_src ** Eshell Add programmable bash completion to Emacs shell-mode #+begin_src elisp :tangle no (require 'bash-completion) (add-hook 'eshell-mode-hook (lambda () (add-hook 'completion-at-point-functions 'bash-completion-capf-nonexclusive nil t ) ) ) #+end_src Use colors in eshell #+begin_src elisp :tangle no (use-package xterm-color :commands (xterm-color-filter) ) (use-package eshell :after xterm-color :config (define-key eshell-hist-mode-map (kbd "M-r") #'consult-history) (add-hook 'eshell-mode-hook (lambda () (setenv "TERM" "xterm-256color"))) (add-hook 'eshell-before-prompt-hook (setq xterm-color-preserve-properties t)) (add-to-list 'eshell-preoutput-filter-functions 'xterm-color-filter) (setq eshell-output-filter-functions (remove 'eshell-handle-ansi-color eshell-output-filter-functions) ) ) #+end_src Eshell completion #+begin_src elisp :tangle no (add-hook 'eshell-mode-hook (lambda () (add-hook 'completion-at-point-functions 'bash-completion-capf-nonexclusive nil t))) #+end_src Emulate A Terminal (EAT) #+begin_src elisp :tangle no (use-package eat :config ;; For `eat-eshell-mode'. (add-hook 'eshell-load-hook #'eat-eshell-mode) ;; For `eat-eshell-visual-command-mode'. (add-hook 'eshell-load-hook #'eat-eshell-visual-command-mode) ) #+end_src