Evil+Term: Go to char-mode when inserting at point-max

master
Pierre Neidhardt 2017-08-03 14:34:49 +01:00
parent b64988584e
commit 56367fce22
1 changed files with 10 additions and 11 deletions

View File

@ -2,20 +2,19 @@
(evil-set-initial-state 'term-mode 'insert)
(defun evil-term-line-mode-and-normal ()
(defun evil-term-char-mode-entry-function ()
(interactive)
(term-line-mode)
(evil-normal-state))
(when (and (= (point) (point-max)) (term-in-line-mode))
(term-char-mode)))
(defun evil-term-char-mode-and-insert ()
(defun evil-term-char-mode-exit-function ()
(interactive)
(term-char-mode)
(evil-insert-state))
(when (term-in-char-mode)
(term-line-mode)))
(evil-define-key 'insert term-raw-map
[escape] 'evil-term-line-mode-and-normal)
(evil-define-key '(normal insert) term-mode-map
"\C-c\C-k" 'evil-term-char-mode-and-insert)
(defun evil-term-setup ()
(add-hook 'evil-insert-state-entry-hook 'evil-term-char-mode-entry-function nil t)
(add-hook 'evil-insert-state-exit-hook 'evil-term-char-mode-exit-function nil t))
(add-hook 'term-mode-hook 'evil-term-setup)
(provide 'init-evil-term)