Sean Whitton
2020-08-30 21:00:03 UTC
Hello,
The recent change to fix #19032 has broken my fido-mode workflow in a
way which I think reveals a bug.
When starting from an empty minibuffer, icomplete-fido-exit now selects
a different match depending on whether the completions have appeared
yet. So if you hit keys fast enough then you get different behaviour
than if you hit them a bit slower.
For example:
1. emacs -q
2. M-x fido-mode RET
3. C-x b foo M-j (type slowly)
4. C-x b bar M-j (type slowly)
5. C-x b M-j (type quickly)
This will take you to *GNU Emacs* but it should take you to foo (the
minibuffer prompt is "Switch to buffer (default foo)"). If you wait for
the completions to appear before hitting M-j, you go to the right place.
I think the fix would be to clear completion-content-when-empty when the
minibuffer exits, instead of leaving data from the last completion
there. Or possibly M-j should call icomplete-completions to popular
completion-content-when-empty with the correct information.
The recent change to fix #19032 has broken my fido-mode workflow in a
way which I think reveals a bug.
When starting from an empty minibuffer, icomplete-fido-exit now selects
a different match depending on whether the completions have appeared
yet. So if you hit keys fast enough then you get different behaviour
than if you hit them a bit slower.
For example:
1. emacs -q
2. M-x fido-mode RET
3. C-x b foo M-j (type slowly)
4. C-x b bar M-j (type slowly)
5. C-x b M-j (type quickly)
This will take you to *GNU Emacs* but it should take you to foo (the
minibuffer prompt is "Switch to buffer (default foo)"). If you wait for
the completions to appear before hitting M-j, you go to the right place.
I think the fix would be to clear completion-content-when-empty when the
minibuffer exits, instead of leaving data from the last completion
there. Or possibly M-j should call icomplete-completions to popular
completion-content-when-empty with the correct information.
--
Sean Whitton
Sean Whitton