Any further thoughts about this patch? I have an updated version which is even more efficient: we now throw a continuation instead of a symbol, and call that continuation to insert the remaining completions. That means the initial completions which are already inserted in the buffer don't need to be deleted and reinserted. Happily, this is also less code.