Fixes incomplete command names in apropos results.
The full command names given by apropos have come from command name string
literals given to CommandObject constructors. For most commands, this has
been accurate, but some commands have incorrect strings. This results in
apropos output that doesn't tell the user the full command name they might
want learn more about. These strings can be fixed.
There's a seperate issue that can't be fixed as easily: plugin commands. With
the way they're implemented, plugin commands have to exclude the root command
from their command name string. To illustrate, the language objc subcommand
has to set its command name string to "objc", which results in apropos printing
results as objc ... instead of language objc ....
To fix both of these issues, this commit changes FindCommandsForApropos to
derive the fully qualified command name using the keys of subcommand maps.
It's not obvious what type qualified_name is. I would either do:
or