Sounds good. I'll update the patch now maybe with "Command in" or "Command for" after I see how it looks on the screen.

Dealing with text stability in the little one-line minibuffer prompt is indeed a challenge. Perhaps we can propertize the prefix to be bold or the menu option list to be bolded so that at least it stands out?

On Wed, Feb 12, 2025 at 3:10 PM Dmitry Gutov <dmitry@gutov.dev> wrote:
Hi!

On 12/02/2025 19:57, Ship Mints wrote:
> Improved prompt for 'project-switch-project' now displays the chosen
> project on which to invoke a command. The prompt now reads "Command for
> project "xxx": " vs "Choose: " which never read well to me.

Thanks for the suggestion - I see the problem it aims to address.

One minor problem is that the "menu" becomes less stable horizontally,
moving right or left depending on the directory name's length.

Not sure if an ideal solution is possible, but here's a tweak with a
shorter prompt. WDYT?

diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el
index ff707437e95..e6280cd0883 100644
--- a/lisp/progmodes/project.el
+++ b/lisp/progmodes/project.el
@@ -2211,7 +2211,7 @@ project--menu-prompt
     project-switch-commands
     "  "))

-(defun project--switch-project-command ()
+(defun project--switch-project-command (&optional dir)
    (let* ((commands-menu
            (mapcar
             (lambda (row)
@@ -2241,7 +2241,11 @@ project--switch-project-command
                                         (propertize "Unrecognized input"
                                                     'face 'warning)
                                         (help-key-description choice
nil)))))
-        (setq choice (read-key-sequence (concat "Choose: " prompt)))
+        (setq choice (read-key-sequence (concat
+                                         (if dir
+                                             (format-message "Command
in `%s': " dir)
+                                           "Command: ")
+                                         prompt)))
          (when (setq command (lookup-key commands-map choice))
            (when (numberp command) (setq command nil))
            (unless (or project-switch-use-entire-map
@@ -2266,7 +2270,7 @@ project-switch-project
    (project--remember-dir dir)
    (let ((command (if (symbolp project-switch-commands)
                       project-switch-commands
-                   (project--switch-project-command)))
+                   (project--switch-project-command dir)))
          (buffer (current-buffer)))
      (unwind-protect
          (progn


Or "Call in ...: ", or "Invoke in ...: ", or just "In ...: ".