Integrate with Vterm
Make C-x p [p..] t launch, or switch to, an in-project Vterm buffer.
(defun my-project-vterm ()
"Start Vterm in the current project's root directory.
Modeled after `project-eshell', which see."
(interactive)
(defvar vterm-buffer-name)
(let* ((default-directory (project-root (project-current t)))
(vterm-buffer-name (project-prefixed-buffer-name "vterm"))
(vterm-buffer (get-buffer vterm-buffer-name)))
(if (and vterm-buffer (not current-prefix-arg))
(pop-to-buffer-same-window vterm-buffer)
(vterm t))))
(with-eval-after-load 'project
(keymap-set project-prefix-map "t" #'my-project-vterm))