(setq-local eshell-hist--new-items 0)
(setq-local eshell-history-ring nil)
- (if (minibuffer-window-active-p (selected-window))
- (progn
- (setq-local eshell-history-append t)
- (add-hook 'minibuffer-exit-hook #'eshell-add-command-to-history nil t))
- (if eshell-history-file-name
- (eshell-read-history nil t)))
+ (when eshell-history-file-name
+ (eshell-read-history nil t))
(unless eshell-history-ring
(setq eshell-history-ring (make-ring eshell-history-size)))
(setq eshell-save-history-index eshell-history-index)
(setq eshell-history-index nil))
-(defun eshell-add-command-to-history ()
- "Add the command entered at `eshell-command's prompt to the history ring.
-The command is added to the input history ring, if the value of
-variable `eshell-input-filter' returns non-nil when called on the
-command.
-
-This function is supposed to be called from the minibuffer, presumably
-as a `minibuffer-exit-hook'."
- (eshell-add-input-to-history
- (buffer-substring (minibuffer-prompt-end) (point-max)))
- (eshell--save-history))
-
(defun eshell-add-to-history ()
"Add last Eshell command to the history ring.
The command is entered into the input history ring, if the value of
(eshell-mode))
buf))
+(declare-function eshell-add-input-to-history "em-hist" (input))
+(declare-function eshell--save-history "em-hist" ())
+
+(defun eshell-command-mode-exit ()
+ "Exit the `eshell-commad-mode' minibuffer and save Eshell history."
+ (interactive)
+ (when (eshell-using-module 'eshell-hist)
+ (eshell-add-input-to-history
+ (buffer-substring (minibuffer-prompt-end) (point-max)))
+ (eshell--save-history))
+ (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)
+ (define-key map [(control ?g)] #'abort-recursive-edit)
+ (define-key map [(control ?m)] #'eshell-command-mode-exit)
+ (define-key map [(control ?j)] #'eshell-command-mode-exit)
+ (define-key map [(meta control ?m)] #'eshell-command-mode-exit)
map))
(define-obsolete-function-alias 'eshell-return-exits-minibuffer