(use-package bash-completion
  :config
  (require 'bash-completion)
  (bash-completion-setup)
  )

(defvar shell-dynamic-complete-functions t)

(require 'bash-completion)
(add-hook 'eshell-mode-hook
        (lambda ()
          (add-hook 'completion-at-point-functions
                    'bash-completion-capf-nonexclusive nil t
                    )
          )
        )

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

(add-hook 'eshell-mode-hook
        (lambda ()
          (add-hook 'completion-at-point-functions
                    'bash-completion-capf-nonexclusive nil t)))

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