diff options
author | 2024-07-01 15:06:43 -0700 | |
---|---|---|
committer | 2024-07-01 15:06:43 -0700 | |
commit | f4b587f5500765996a1153b7eaf87d13b46c1ca1 (patch) | |
tree | bdcd88d678ff57ac8082f70849482ca5c8c0896d | |
parent | e917daef5aa436911bac7e16886bedaf12c0d235 (diff) | |
download | emacs-config-f4b587f5500765996a1153b7eaf87d13b46c1ca1.tar.gz emacs-config-f4b587f5500765996a1153b7eaf87d13b46c1ca1.zip |
[oni-vterm] Add function to open vterm in a project
-rw-r--r-- | oni-project.el | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/oni-project.el b/oni-project.el index 2443485..b66fba9 100644 --- a/oni-project.el +++ b/oni-project.el @@ -4,7 +4,7 @@ ;; Author: Tom Willemse <tom@ryuslash.org> ;; Keywords: local -;; Version: 2023.0722.222800 +;; Version: 2024.0701.150636 ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by @@ -28,6 +28,7 @@ (require 'project) (declare-function magit-status-setup-buffer "magit-status.el") +(declare-function vterm "vterm.el") (defun oni-project-magit () "Start Magit in the current project's root directory." @@ -38,5 +39,29 @@ (define-key project-prefix-map (kbd "m") #'oni-project-magit) (add-to-list 'project-switch-commands '(oni-project-magit "Magit status"))) +(defun oni-project-vterm () + "Start Vterm in the current project's root directory. +If a buffer already exists for running Vterm in the project's root, +switch to it. Otherwise, create a new Vterm buffer. With +\\[universal-argument] prefix arg, create a new Vterm buffer even if one +already exists." + (interactive) + (defvar vterm-buffer-name-string) + (let* ((project-root (project-root (project-current t))) + (vterm-buffer (seq-find (lambda (b) + (with-current-buffer b + (and (eq 'vterm-mode major-mode) + (string-prefix-p project-root default-directory)))) + (buffer-list))) + (default-directory project-root) + (vterm-buffer-name-string (project-prefixed-buffer-name "vterm"))) + (if (and vterm-buffer (not current-prefix-arg)) + (pop-to-buffer vterm-buffer (bound-and-true-p display-comint-buffer-action)) + (vterm)))) + +(when (locate-library "vterm") + (define-key project-prefix-map (kbd "t") #'oni-project-vterm) + (add-to-list 'project-switch-commands '(oni-project-vterm "Terminal"))) + (provide 'oni-project) ;;; oni-project.el ends here |