[emacs] have C-d quit eshell on empty prompt input
authorAmin Bandali <amin@gnu.org>
Thu, 30 Aug 2018 02:13:15 +0000 (22:13 -0400)
committerAmin Bandali <amin@gnu.org>
Thu, 30 Aug 2018 02:13:15 +0000 (22:13 -0400)
init.org

index 51cd9ca..9c294be 100644 (file)
--- a/init.org
+++ b/init.org
@@ -753,6 +753,26 @@ There's no way I could top that, so I won't attempt to.
   (defalias 'locate #'counsel-locate))
 #+end_src
 
+*** eshell
+
+#+begin_src emacs-lisp
+(use-package eshell
+  :commands eshell
+  :config
+  (eval-when-compile (defvar eshell-prompt-regexp))
+  (defun amin/eshell-quit-or-delete-char (arg)
+    (interactive "p")
+    (if (and (eolp) (looking-back eshell-prompt-regexp nil))
+        (eshell-life-is-too-much)
+      (delete-char arg)))
+
+  (defun amin|eshell-setup ()
+    (bind-keys :map eshell-mode-map
+               ("C-d" . amin/eshell-quit-or-delete-char)))
+
+  :hook (eshell-mode . amin|eshell-setup))
+#+end_src
+
 * Borg's =layer/essentials=
 
 TODO: break this giant source block down into individual org sections.