diff --git a/modules/term/vterm/autoload.el b/modules/term/vterm/autoload.el index 4e4d66609..d059ae8d3 100644 --- a/modules/term/vterm/autoload.el +++ b/modules/term/vterm/autoload.el @@ -34,19 +34,7 @@ If prefix ARG is non-nil, recreate vterm buffer in the current project's root." (with-current-buffer buffer (unless (eq major-mode 'vterm-mode) (vterm-mode)) - (when (and (featurep 'tramp) - (tramp-tramp-file-p default-directory)) - (message "default-directory is %s" default-directory) - (with-parsed-tramp-file-name default-directory path - (let ((method (cadr (assoc `tramp-login-program - (assoc path-method tramp-methods))))) - (vterm-send-string - (concat method " " - (when path-user (concat path-user "@")) path-host)) - (vterm-send-return) - (vterm-send-string - (concat "cd " path-localname)) - (vterm-send-return))))) + (+vterm-open-remote-maybe)) (pop-to-buffer buffer))))) ;;;###autoload @@ -68,7 +56,8 @@ If prefix ARG is non-nil, cd into `default-directory' instead of project root." project-root)) display-buffer-alist) (setenv "PROOT" project-root) - (vterm))) + (vterm) + (+vterm-open-remote-maybe))) (defvar +vterm--insert-point nil) diff --git a/modules/term/vterm/config.el b/modules/term/vterm/config.el index e21b7a60a..48c78d262 100644 --- a/modules/term/vterm/config.el +++ b/modules/term/vterm/config.el @@ -19,6 +19,23 @@ ;; Prevent premature horizontal scrolling hscroll-margin 0) + (defun +vterm-open-remote-maybe () + "When `default-directory` is remote, use the corresponding +method to prepare vterm at the corresponding remote directory." + (when (and (featurep 'tramp) + (tramp-tramp-file-p default-directory)) + (message "default-directory is %s" default-directory) + (with-parsed-tramp-file-name default-directory path + (let ((method (cadr (assoc `tramp-login-program + (assoc path-method tramp-methods))))) + (vterm-send-string + (concat method " " + (when path-user (concat path-user "@")) path-host)) + (vterm-send-return) + (vterm-send-string + (concat "cd " path-localname)) + (vterm-send-return))))) + ;; Restore the point's location when leaving and re-entering insert mode. (when (featurep! :editor evil) (add-hook! 'vterm-mode-hook