@njx Partly it's following how the existing smart-autocomplete API did things.  But also, the `resultProvider` and `formatter` don't really support a one-to-many mapping because they require a single, specific return value.  So it seemed simpler to keep the other two (`onCommit` and `onHighlight`) using a similar interface rather than having half use events and half not...