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

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

bug#63648: 29.0.90; project.el: with switch-use-entire-map, switch-proje


From: Dmitry Gutov
Subject: bug#63648: 29.0.90; project.el: with switch-use-entire-map, switch-project errors on non-project commands
Date: Thu, 26 Oct 2023 01:26:52 +0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0

On 25/10/2023 19:53, Juri Linkov wrote:
+         ;; Variation: could be a separate command, or an option.
+         ;; (command (let ((overriding-local-map project-prefix-map))
+         ;;            (key-binding (read-key-sequence
+         ;;                          (format "[execute in %s]:" (project-root 
pr)))
+         ;;                         t)))

Thanks, it works nicely.
Any reason not to use this by default?

Nothing critical, but it might not fit the expectations without additional instructions in the prompt, or it can be unnecessary if the user had reached this command through 'C-x p o'.

In the latter case there is also a small chance that the user had set up some advanced sub-maps inside project-prefix-map which would shadow some global bindings. So maybe a separate command is best. Please see how you like the attached new version together with

  (setq project-switch-commands #'project-prefix-or-any-command)

I'm not sure about project-prefix-or-any-command's prompt, though (phrasing feels awkward). Improvements welcome.

+      (if found
+          (let ((project-current-directory-override root))
+            (call-interactively command))
+        (let ((default-directory root))
+          (call-interactively command))))))

Not sure why need to let-bind project-current-directory-override here.
It seems to work with and without it.

You mean with found=nil? Indeed, rebinding project-current-directory-override instead of just doing that with default-directory is critical for only a small subset of commands (such as project-switch-buffer or bug#58784). So this will be a 99% solution that, however, leads to more straightforward code.

BTW, let me know if you prefer the "prefix command" style from your last patch for this command. My main sticking point with it was the change of logic used to indicate a different project root, but it can just as well be transplanted there. So if the prefix command approach is better for some scenarios, we can switch to it.

Attachment: project-other-command-v4.diff
Description: Text Data


reply via email to

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