diff --git a/modules/term/vterm/autoload.el b/modules/term/vterm/autoload.el index 85f8b22fc..8d71a56ae 100644 --- a/modules/term/vterm/autoload.el +++ b/modules/term/vterm/autoload.el @@ -55,3 +55,18 @@ If prefix ARG is non-nil, cd into `default-directory' instead of project root." default-directory (or (doom-project-root) default-directory)))) (vterm))) + + +(defvar +vterm--insert-point nil) + +;;;###autoload +(defun +vterm-remember-insert-point-h () + "Remember point when leaving insert mode." + (setq-local +vterm--insert-point (point))) + +;;;###autoload +(defun +vterm-goto-insert-point-h () + "Go to the point we were at when we left insert mode." + (when +vterm--insert-point + (goto-char +vterm--insert-point) + (setq-local +vterm--insert-point nil))) diff --git a/modules/term/vterm/config.el b/modules/term/vterm/config.el index 097e9d597..319096e80 100644 --- a/modules/term/vterm/config.el +++ b/modules/term/vterm/config.el @@ -15,6 +15,12 @@ (setq vterm-kill-buffer-on-exit t) + (when (featurep! :editor evil) + (add-hook! 'vterm-mode-hook + (defun +vterm-init-remember-point-h () + (add-hook 'evil-insert-state-exit-hook #'+vterm-remember-insert-point-h nil t) + (add-hook 'evil-insert-state-entry-hook #'+vterm-goto-insert-point-h nil t)))) + (add-hook 'vterm-mode-hook #'doom-mark-buffer-as-real-h) ;; Modeline serves no purpose in vterm (add-hook 'vterm-mode-hook #'hide-mode-line-mode))