Make C-d quit eshell when appropriate

This commit is contained in:
Tom Willemse 2016-11-04 13:08:16 +01:00
parent 3106af31fe
commit 6167a906c6

View file

@ -23,3 +23,23 @@ Show the status of each command in the fringe of the eshell buffer.
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(add-hook 'eshell-mode-hook 'eshell-fringe-status-mode) (add-hook 'eshell-mode-hook 'eshell-fringe-status-mode)
#+END_SRC #+END_SRC
Close the buffer when C-d is pressed and we're at the end of the
buffer.
#+BEGIN_SRC emacs-lisp
(defun oni:eshell-C-d ()
"Call `delete-char' or close the buffer if it fails."
(interactive)
(condition-case err
(call-interactively #'delete-char)
(error (if (and (eq (car err) 'end-of-buffer)
(looking-back eshell-prompt-regexp nil))
(kill-buffer)
(signal (car err) (cdr err))))))
(defun oni:set-eshell-C-d ()
(define-key eshell-mode-map (kbd "C-d") #'oni:eshell-C-d))
(add-hook 'eshell-load-hook #'oni:set-eshell-C-d)
#+END_SRC