diff options
| author | Juri Linkov <juri@linkov.net> | 2020-06-02 02:01:25 +0300 |
|---|---|---|
| committer | Juri Linkov <juri@linkov.net> | 2020-06-02 02:01:25 +0300 |
| commit | 2c1e5b9e77d5da26cfb01917c25546e776c67789 (patch) | |
| tree | 7a816dc41c678c9493415c4004419aa75c18599f | |
| parent | 6d6ec1bc1e784af786cc0436f54211095bf7a952 (diff) | |
| download | emacs-2c1e5b9e77d5da26cfb01917c25546e776c67789.tar.gz | |
* 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.
| -rw-r--r-- | doc/emacs/maintaining.texi | 11 | ||||
| -rw-r--r-- | etc/NEWS | 4 | ||||
| -rw-r--r-- | 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 22b7639d349..cc7415e7ad5 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. @@ -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 2d0b6c4a21b..12149806891 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 |
