From 6167a906c6586d099c02bb3e5e16e01456b6b5c4 Mon Sep 17 00:00:00 2001 From: Tom Willemse Date: Fri, 4 Nov 2016 13:08:16 +0100 Subject: Make C-d quit eshell when appropriate --- emacs/.emacs.d/init/oni-eshell-init.org | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/emacs/.emacs.d/init/oni-eshell-init.org b/emacs/.emacs.d/init/oni-eshell-init.org index 143c140..2e77ae1 100644 --- a/emacs/.emacs.d/init/oni-eshell-init.org +++ b/emacs/.emacs.d/init/oni-eshell-init.org @@ -23,3 +23,23 @@ Show the status of each command in the fringe of the eshell buffer. #+BEGIN_SRC emacs-lisp (add-hook 'eshell-mode-hook 'eshell-fringe-status-mode) #+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 -- cgit v1.2.3-54-g00ecf