Change default-directory before prompting in project-compile

This causes command completion to work from the project root, letting
users complete top-level folders, make targets, etc (bug#45765).

* lisp/progmodes/project.el (project-compile): Simplify using
call-interactively, as done with project(-async)-shell-command.
This commit is contained in:
Kévin Le Gouguec 2021-01-10 10:43:41 +01:00 committed by Dmitry Gutov
parent 5d6817086d
commit 1513ee37a4

View file

@ -970,20 +970,11 @@ loop using the command \\[fileloop-continue]."
(declare-function compilation-read-command "compile")
;;;###autoload
(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)))
(require 'compile)
(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)))
(compile command comint)))
(defun project-compile ()
"Run `compile' in the project root."
(interactive)
(let ((default-directory (project-root (project-current t))))
(call-interactively #'compile)))
(defun project--read-project-buffer ()
(let* ((pr (project-current t))