> One way to disambiguate them is to use text properties > on the completion candidate strings. > > But unfortunately read-from-minibuffer doesn't obey > a non-nil value of minibuffer-allow-text-properties, > because choose-completion unconditionally discards all properties > by substring-no-properties. > > Maybe choose-completion should use substring instead of > substring-no-properties when minibuffer-allow-text-properties > is non-nil? Here is a new variable that helps to disambiguate completions with the same name but different annotations by using text properties: