|
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).
[Prev in Thread] | Current Thread | [Next in Thread] |