Hi Clemens, > As per the comment above the affected code, the client can specify the face > when prefix and suffix are provided. The prefix is already checked earlier > and what remained was checking the suffix not the prefix. Shouldn't then this code with font-lock-prepend-text-property be removed completely? Since both prefix and suffix are non-nil, this makes code no-op. > There is another thing I would like to bring up in this context: When the > annotations returned by annotation/affixation functions already specify > a face I think it would be nicer if the completion-annotations face > wouldn't be applied generally. In Selectrum we use something like: > > (if (text-property-not-all 0 (length str) 'face nil str) > str > (propertize str 'face 'completions-annotations)) So you propose to search for the face text-property in the provided string to decide whether to add the default face in completion--insert-strings? > This gives the client full control over the visual appearance if that is > preferred. Maybe this approach could also make sense to be included in > Emacs? Do you see any possible backward-compatibility issues with changing this in Emacs? For example, when a package like Selectrum puts another face on the completion string, then it will be displayed instead of the default completion-annotations face. > Currently for the annotation function the completions-annotations > face is always applied and for the affixation function it also still gets > applied when the affixation function returns a two candidate list (like > read-extended-command--affixation on current master). The case of also > allowing a two candidate list to be returned by affixation functions is > also currently undocumented. Thanks for noticing the documentation problem. Do you think this fix is sufficient: