[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 2c1e5b9: * lisp/progmodes/project.el (project-vc-dir, project-she
From: |
Juri Linkov |
Subject: |
master 2c1e5b9: * lisp/progmodes/project.el (project-vc-dir, project-shell): New commands. |
Date: |
Mon, 1 Jun 2020 19:01:35 -0400 (EDT) |
branch: master
commit 2c1e5b9e77d5da26cfb01917c25546e776c67789
Author: Juri Linkov <juri@linkov.net>
Commit: Juri Linkov <juri@linkov.net>
* 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.
---
doc/emacs/maintaining.texi | 11 +++++++++++
etc/NEWS | 4 ++--
lisp/progmodes/project.el | 36 +++++++++++++++++++++++++++++++-----
3 files changed, 44 insertions(+), 7 deletions(-)
diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi
index 22b7639..cc7415e 100644
--- a/doc/emacs/maintaining.texi
+++ b/doc/emacs/maintaining.texi
@@ -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.
diff --git a/etc/NEWS b/etc/NEWS
index 3086ffa..36ef350 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -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.
+++
diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el
index 2d0b6c4..1214980 100644
--- a/lisp/progmodes/project.el
+++ b/lisp/progmodes/project.el
@@ -672,6 +672,20 @@ PREDICATE, HIST, and DEFAULT have the same meaning as in
(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."
(interactive)
@@ -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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master 2c1e5b9: * lisp/progmodes/project.el (project-vc-dir, project-shell): New commands.,
Juri Linkov <=