Commit ed6c4a2fa115
Changed files (2)
tools
emacs
config
lisp
tools/emacs/config/config-projects.el
@@ -18,7 +18,7 @@ It will search for README.org, README.md or README in that order"
(use-package project
:bind (("C-x p v" . vde-project-magit-status)
("C-x p s" . vde-project-vterm)
- ("C-x p X" . vde/run-in-project-vterm))
+ ("C-x p X" . vde-project-run-in-vterm))
:config
(setq vde/project-local-identifier '(".project")) ;; "go.mod"
(setq project-switch-commands
@@ -72,12 +72,6 @@ switch to it. Otherwise, create a new vterm shell."
(when command
(vterm-send-string command)
(vterm-send-return))))
- (defun vde/run-in-project-vterm ()
- (interactive)
- (let* ((default-directory (vde-project--project-current))
- (default-project-vterm-name (project-prefixed-buffer-name "vterm"))
- (vterm-buffer (get-buffer default-project-vterm-name)))
- (vde-project-vterm (read-string "Command: "))))
)
(use-package conner
tools/emacs/lisp/project-func.el
@@ -10,6 +10,7 @@
(project-root (project-current))
(cdr (project-current))))
+;;;###autoload
(defun vde-project--project-root-or-default-directory ()
"Return path to the project root *or* the default-directory."
(cond
@@ -17,5 +18,26 @@
(project-root (project-current)))
(t default-directory)))
+;;;##autoload
+(defun vde-project-run-in-vterm (command &optional directory)
+ "Run the given `COMMAND' in a new vterm buffer in `project-root' or the
+given `DIRECTORY'.
+
+This is similar to `compile' but with vterm.
+One reason for this is to be able to run commands that needs a TTY."
+ (interactive "sCommand: ")
+ (let* ((cwd (or directory (vde-project--project-root-or-default-directory)))
+ (default-directory cwd)
+ (buffer-name (format "*vterm %s: %s*" cwd command))
+ (buffer (get-buffer buffer-name))
+ (vterm-kill-buffer-on-exit nil)
+ (vterm-shell (concat "bash -c '" command ";exit'")))
+ (when buffer
+ (kill-buffer buffer))
+ (let ((buffer (generate-new-buffer buffer-name)))
+ (pop-to-buffer buffer)
+ (with-current-buffer buffer
+ (vterm-mode)))))
+
(provide 'project-func)
;;; project-func.el ends here