Fix project-recompile directory

* lisp/progmodes/project.el: Remove stale compilation-read-command
declarations.  Autoload recompile for Emacs versions prior to 31, to
allow calling project-recompile before project-compile (bug#74631).
(project-recompile): Set compilation-directory to avoid recompile
using a value unrelated to the current project (bug#68570).
This commit is contained in:
Basil L. Contovounesios 2025-10-19 13:21:10 +02:00
parent d1079cced2
commit a525a7f2af

View file

@ -1720,10 +1720,6 @@ If you exit the `query-replace', you can later continue the
'default)
(fileloop-continue))
(defvar compilation-read-command)
(declare-function compilation-read-command "compile")
(declare-function recompile "compile")
(defun project-prefixed-buffer-name (mode)
(concat "*"
(if-let* ((proj (project-current nil)))
@ -1772,12 +1768,18 @@ If non-nil, it overrides `compilation-buffer-name-function' for
(with-current-buffer orig-current-buffer
(setq-local compile-command orig-compile-command))))))
;; Autoloaded since Emacs 31.
(autoload 'recompile "compile" nil t)
;;;###autoload
(defun project-recompile (&optional edit-command)
"Run `recompile' in the project root with an appropriate buffer."
(declare (interactive-only recompile))
(interactive "P")
(let ((default-directory (project-root (project-current t)))
(defvar compilation-directory)
(let* ((default-directory (project-root (project-current t)))
;; The former overrides the latter in `recompile'.
(compilation-directory default-directory)
(compilation-buffer-name-function
(or project-compilation-buffer-name-function
compilation-buffer-name-function)))