add completion context, fix Apply edge case

In particular, we choose not to insert the argument list when we have an
Apply() context, similar to what Java does. This helps to reduce the
chances of messing up already existing code.