To make sure I understand correctly, when using `completing-read` to read user input, that is narrowing, while the `C-x <up>` and *Completions* buffer is completion.No, `completing-read' just invokes an interface, that frontends can implement a UI for. The default UI provides a completing/expanding interface, while Vertico, Helm, Ivy, etc. do selecting/narrowing. When using `completing-read' you cannot really assume one or the other, so in effect one has to find a middle ground. It is best you try your code in emacs -Q without any changes and see how it behaves. Things like SPC doing something else than you would expect is just one pitfall, others I can recall are providing text that is difficult to input (I wrote a package a few years back called "insert-kaomoji" that used `completing-read' to prompt the user eastern-style emoticons; it is easy to use with a selecting framework, but more inconvenient if the user is first made to complete a string that is difficult to write, as most of the characters are not easy to type).
I tried the attached patch with `emacs -q` and now I understand how this would be very annoying without something like vertico installed haha. Nevertheless, it seems to work!
I'm attaching a patch based on the conversation so far to get feedback on.
I believe I should also write something to the NEWS file.
Also, I'm wondering if this counts as non-trivial enough that I would need to sign the FSF copyright.
Regarding testing, as far as I can tell, there are currently no
tests for `compilation-read-command`.
Should I add anything? If yes, I'll probably need someone to point
to existing tests for similar things that I can copy from.
Am I forgetting anything else?