|
From: | Dmitry Gutov |
Subject: | bug#63648: 29.0.90; project.el: with switch-use-entire-map, switch-project errors on non-project commands |
Date: | Mon, 23 Oct 2023 20:24:08 +0300 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 |
On 23/10/2023 09:58, Juri Linkov wrote:
Wow, it works nicely for 'C-x p p C-x d'. But strange it fails for 'C-x p p C-x v d' with the same error: (wrong-type-argument commandp 1)That's because (lookup-key ... "vd") also returns 1. I haven't been able to find a solution that works like we would expect. The most trivial would be to loop cutting off invalid prefixes, but then we end up with 'd', not 'v'. That's probably not what you want. Ideally, 'read-key-sequence' would stop at the user pressing 'v' and return "^Xv", then the rest would work out okay. But I haven't managed to have it do that, even when using overriding-terminal-local-map and temporarily altering the global map. My experimental patch is below, you can try tweaking it.Now can't type 'C-x p p C-x v d' completely because 'C-x p p C-x v' opens vc-dir after typing 'v'.
Huh. That actually works for me now, after I ran 'make' and restarted.But I thought you wanted this? 'C-x v d' ends with vc-dir, so if 'C-x p p C-x v' opens vc-dir, then isn't this what you expected?
Anyway, the resulting UI is fairly counter-intuitive.
And overall I'm not sure it's a constructive approach because you might have been going for 'C-x v d' (where the 'v' translation is correct), but you might have been going for 'C-x v D' or 'C-x v v' instead, very different commands. It might be better to report unknown key sequence and let the user make an explicit choice, like it works now. Depends on whether you notice the key sequence echoing while doing that input.Maybe adding a new option 'project-switch-use-global-map' would help?
Try the attached, it's another iteration on the latest patch (prefix-command-echo-keystrokes-functions doesn't seem to work reliably in this context). Try it together with
(setq project-switch-commands 'project-any-command) Also see the "Variation" in the comment (it allows for short bindings).
project-other-command-v3.diff
Description: Text Data
[Prev in Thread] | Current Thread | [Next in Thread] |