Stefan Monnier writes: >> My next question is, how does one "extend" a completion table? > > Not sure what you mean, but you can combine completion tables for > example by using completion-table-in-turn, or by doing something > similar to what it does. Yes, that's what I meant. >> Specifically: if c-a-p expects to receive (START END COLLECTION), should > ^^^^^^^^^^ > BTW, this is what I call "completion table". Right, that much I understood. But otherwise I was very undereducated about how completion works, and so have gone down some rabbit holes in the course of writing the attached patch, which is underwhelming for how long it took me. I doubt this will be acceptable as-is, but I do hope it will get us (me) a step closer. What I ended up with was an option, `message-expand-name-tables', that contact-management/addressbook packages can add completion tables to. This is very simple, but probably too simple: it leaves no mechanism for these packages to add extra PROPS data, like :predicate or :annotation, and also doesn't give them the opportunity to alter START and END (though maybe it shouldn't?). Anyway, for what it is, it works. It also add six spurious blank spaces to the end of any completion, at least in my test setup, but who's counting!? Hopefully we can go somewhere from here.