improve show_call_signatures performance

The current implementation of `show_call_signatures` is:

1. fire `CursorMovedI`
2. parse the current buffer
3. show call signatures

These steps are processed on every cursor move.

This tries to reduce parsing the current buffer as much as possible.
I hope this fixes #217.