> > So at least cycling-completion seems fundamentally incompatible with > > this idea of abbrev-expansion-after-completion, at least if you want to > > allow arbitrarily complex abbrevs like skeletons. > Indeed, this is a real problem.
I've now added a :exit-function property that completion-at-point-functions can return which is a function that gets called when completion is finished. It operates outside of the completion-table, so has access to the buffer text and can do things like abbrev-expand. It gets a status argument which tells it whether the completion is `exact' (basically, it's valid according to the completion-table, but there may be further completions available), `sole' (it's the only completion), and `finished' (not only it's the sole completion, but the user is not expected to want to change it). `sole' is used by cycling, so the :exit-function can call abbrev-expand when the status is `finished' and it won't interfere with cycling (which simply won't benefit from abbrev-expansion). Stefan