Subject: bug#66993: [PATCH] project.el: avoid asking user about project-list-file lock

From: Dmitry Gutov <[email-masked]>
Date: Wed, 8 Nov 2023 02:24:13 +0200

On 07/11/2023 23:28, Spencer Baugh wrote:
> - project-mode-line will call this on mode-line update

Hopefully this will never result in writes to disk made more often than 
once per user command, or buffer switch, etc.

> -      (write-region nil nil filename nil 'silent))))
> +      ;; If project-list-file is locked by some other Emacs, fail to
> +      ;; write rather than prompting the user.
> +      (ignore-error file-locked
> +        (cl-letf (((symbol-function 'ask-user-about-lock)
> +                   (lambda (file opponent)
> +                     (signal 'file-locked (list file opponent)))))
> +          (write-region nil nil filename nil 'silent))))))

I wonder if all cl-letf uses like this will survive native compilation, 
for example. Or will break over time due to internal changes in the 
function.

Anyway, maybe an implementation like this (totally untested)?

Or the warning could be skipped entirely.

diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el
index a6426c08840..e544dfefa73 100644
--- a/lisp/progmodes/project.el
+++ b/lisp/progmodes/project.el
@@ -1719,7 +1719,9 @@ project--write-project-list
                                  (expand-file-name name)))))
                      project--list)
              (current-buffer)))
-      (write-region nil nil filename nil 'silent))))
+      (let ((noninteractive t))
+        (with-demoted-errors "Failed to save file list: %S"
+          (write-region nil nil filename nil 'silent))))))

  ;;;###autoload
  (defun project-remember-project (pr &optional no-write)