1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-15 10:30:25 -08:00

* lisp/progmodes/project.el (project-vc-dir, project-shell): New commands.

(project-compile): Add args and interactive spec like in 'compile'.
(project-switch-commands): Bind project-vc-dir to "v",
project-shell to "s", and rebind project-find-regexp from "s" to "r".

* doc/emacs/maintaining.texi (Project File Commands):
Describe project-vc-dir and project-shell.
This commit is contained in:
Juri Linkov 2020-06-02 02:01:25 +03:00
parent 6d6ec1bc1e
commit 2c1e5b9e77
3 changed files with 44 additions and 7 deletions

View file

@ -1718,6 +1718,17 @@ continue with @w{@kbd{M-x fileloop-continue @key{RET}}}.
(@pxref{Dired}) listing the files in the current project's root
directory.
@findex project-vc-dir
The command @code{project-vc-dir} opens a VC Directory buffer
(@pxref{VC Directory Mode}) listing the version control statuses of
the files in a directory tree under the current project's
root directory.
@findex project-shell
The command @code{project-shell} starts a shell session
(@pxref{Shell}) in a new buffer with the current project's root as the
working directory.
@findex project-eshell
The command @code{project-eshell} starts an Eshell session in a new
buffer with the current project's root as the working directory.

View file

@ -411,8 +411,8 @@ information, see the related entry about 'shr-browse-url' above.
all commands that prompt for a project directory.
+++
*** New commands 'project-dired' and 'project-eshell'.
These commands run Dired and Eshell in a project's root directory,
*** New commands 'project-dired', 'project-vc-dir', 'project-shell', 'project-eshell'.
These commands run Dired/VC-Dir and Shell/Eshell in a project's root directory,
respectively.
+++

View file

@ -671,6 +671,20 @@ PREDICATE, HIST, and DEFAULT have the same meaning as in
(interactive)
(dired (project-root (project-current t))))
;;;###autoload
(defun project-vc-dir ()
"Open VC-Dir in the current project."
(interactive)
(vc-dir (project-root (project-current t))))
;;;###autoload
(defun project-shell ()
"Open Shell in the current project."
(interactive)
(let ((default-directory (project-root (project-current t))))
;; Use create-file-buffer to uniquify shell buffer names.
(shell (create-file-buffer "*shell*"))))
;;;###autoload
(defun project-eshell ()
"Open Eshell in the current project."
@ -705,13 +719,23 @@ loop using the command \\[fileloop-continue]."
from to (project-files (project-current t)) 'default)
(fileloop-continue))
(defvar compilation-read-command)
(declare-function compilation-read-command "compile")
;;;###autoload
(defun project-compile ()
"Run `compile' in the project root."
(interactive)
(defun project-compile (command &optional comint)
"Run `compile' in the project root.
Arguments the same as in `compile'."
(interactive
(list
(let ((command (eval compile-command)))
(if (or compilation-read-command current-prefix-arg)
(compilation-read-command command)
command))
(consp current-prefix-arg)))
(let* ((pr (project-current t))
(default-directory (project-root pr)))
(call-interactively 'compile)))
(compile command comint)))
;;; Project list
@ -795,8 +819,10 @@ It's also possible to enter an arbitrary directory."
;;;###autoload
(defvar project-switch-commands
'(("f" "Find file" project-find-file)
("s" "Find regexp" project-find-regexp)
("r" "Find regexp" project-find-regexp)
("d" "Dired" project-dired)
("v" "VC-Dir" project-vc-dir)
("s" "Shell" project-shell)
("e" "Eshell" project-eshell))
"Alist mapping keys to project switching menu entries.
Used by `project-switch-project' to construct a dispatch menu of