bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#67171: 30.0.50; (At least) some VC commands fail with project-prefix


From: Dmitry Gutov
Subject: bug#67171: 30.0.50; (At least) some VC commands fail with project-prefix-or-any-command
Date: Wed, 6 Dec 2023 02:26:12 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0

On 06/12/2023 00:40, Sean Whitton wrote:
Alright, I've bisected it.  After step 3, additionally eval this form:

     (define-key project-prefix-map "L" #'vc-print-root-log)

I have this because I want to be able to type just L instead of C-x v L.
That doesn't work -- possibly not a bug -- but surely adding that
binding shouldn't affect C-x v L, at least?

All right, the full scenario is unexpected, but otherwise it's a documented behavior, see the docstring for 'project-any-command'.

We discussed the possibility of the override in the other way (in bug#63648, which resulted in this command), but not an opt-out for commands in project-prefix-map, yet.

So... something like this?

diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el
index a81bb63fba4..feef7ba5248 100644
--- a/lisp/progmodes/project.el
+++ b/lisp/progmodes/project.el
@@ -1861,9 +1861,10 @@ project-any-command
     (when command
       ;; We could also check the command name against "\\`project-",
       ;; and/or (get command 'project-command).
-      (map-keymap
-       (lambda (_evt cmd) (if (eq cmd command) (setq found t)))
-       project-prefix-map)
+      (unless (get command 'project-switch-with-default-directory)
+        (map-keymap
+         (lambda (_evt cmd) (if (eq cmd command) (setq found t)))
+         project-prefix-map))
       (if found
           (let ((project-current-directory-override root))
             (call-interactively command))


Combined with

  (put 'vc-print-root-log 'project-switch-with-default-directory t)

somewhere in your init script.

The alternative would be tagging all project-related commands. Even if we also check for the 'project-' prefix in command's name, the user-defined commands using the project API will be affected (I don't know for how many it would be a problem, but still).





reply via email to

[Prev in Thread] Current Thread [Next in Thread]