summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorNoam Postavsky <npostavs@gmail.com>2020-05-24 20:17:40 -0400
committerNoam Postavsky <npostavs@gmail.com>2020-05-24 20:17:40 -0400
commitb9b8c5e3fa71aea719934ce422fb22734590a8b3 (patch)
treebf0a6540c5771da947eb2b6818e82c2f08d1d69c /lisp
parent3b65fb7658c2717457c033c6704cf3b007804226 (diff)
downloademacs-b9b8c5e3fa71aea719934ce422fb22734590a8b3.tar.gz
Make dedicated keymap and mode for eshell-command (Bug#41370)
Otherwise, we end up permanently modifying eshell-mode-map when running eshell-command. * lisp/eshell/eshell.el (eshell-command-mode): New mode, with map to contain the bindings previously set by eshell-return-exits-minibuffer. (eshell-return-exits-minibuffer): Make into obsolete alias for eshell-command-mode. (eshell-command): Use eshell-command-mode instead of eshell-return-exits-minibuffer.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/eshell/eshell.el22
1 files changed, 13 insertions, 9 deletions
diff --git a/lisp/eshell/eshell.el b/lisp/eshell/eshell.el
index 2a63882ff09..5ffb159b575 100644
--- a/lisp/eshell/eshell.el
+++ b/lisp/eshell/eshell.el
@@ -265,14 +265,18 @@ information on Eshell, see Info node `(eshell)Top'."
(eshell-mode))
buf))
-(defun eshell-return-exits-minibuffer ()
- ;; This is supposedly run after enabling esh-mode, when eshell-mode-map
- ;; already exists.
- (defvar eshell-mode-map)
- (define-key eshell-mode-map [(control ?g)] 'abort-recursive-edit)
- (define-key eshell-mode-map [(control ?m)] 'exit-minibuffer)
- (define-key eshell-mode-map [(control ?j)] 'exit-minibuffer)
- (define-key eshell-mode-map [(meta control ?m)] 'exit-minibuffer))
+(define-minor-mode eshell-command-mode
+ "Minor mode for `eshell-command' input.
+\\{eshell-command-mode-map}"
+ :keymap (let ((map (make-sparse-keymap)))
+ (define-key map [(control ?g)] 'abort-recursive-edit)
+ (define-key map [(control ?m)] 'exit-minibuffer)
+ (define-key map [(control ?j)] 'exit-minibuffer)
+ (define-key map [(meta control ?m)] 'exit-minibuffer)
+ map))
+
+(define-obsolete-function-alias 'eshell-return-exits-minibuffer
+ #'eshell-command-mode "28.1")
(defvar eshell-non-interactive-p nil
"A variable which is non-nil when Eshell is not running interactively.
@@ -292,7 +296,7 @@ With prefix ARG, insert output into the current buffer at point."
;; Enable `eshell-mode' only in this minibuffer.
(minibuffer-with-setup-hook #'(lambda ()
(eshell-mode)
- (eshell-return-exits-minibuffer))
+ (eshell-command-mode +1))
(unless command
(setq command (read-from-minibuffer "Emacs shell command: "))
(if (eshell-using-module 'eshell-hist)