diff --git a/emacs.el b/emacs.el index feb7bf2..0572698 100644 --- a/emacs.el +++ b/emacs.el @@ -1766,6 +1766,30 @@ Optional prefix ARG says how many lines to unflag; default is one line." (lazy-load-eval 'eshell nil + (defvar eshell-text-mode-map + (let ((map (make-sparse-keymap))) + (define-key map (kbd "C-x t") 'eshell-text-mode-toggle) + map)) + + (define-derived-mode eshell-text-mode text-mode + "Eshell-Text" + "Text-mode for Eshell." + nil) + + (defun eshell-text-mode-toggle () + "Toggle eshell-text-mode and eshell-mode." + (interactive) + (cond ((eq major-mode + 'eshell-text-mode) + (goto-char (point-max)) + (eshell-mode)) + ((eq major-mode + 'eshell-mode) + (eshell-text-mode)) + (t + (message "Not in eshell buffer") + nil))) + (defun my-eshell-backward-delete-char () (interactive) (when (< (save-excursion @@ -1981,6 +2005,8 @@ if arg given, use that eshell buffer, otherwise make new eshell buffer." ;; (interactive) ;; (eshell-goto-prompt) ;; (keyboard-quit))) + (define-key eshell-mode-map (kbd "C-x t") + 'eshell-text-mode-toggle) (define-key eshell-mode-map (kbd "C-u") 'eshell-kill-input) (define-key eshell-mode-map (kbd "C-d")