For my reply, I'm assuming you are using the built-in completion list for your UI. If not, please give more info on your setup.
I believe with dedicated code snippet completion lists, you would want to use the normal rules to match whether a selection was made. So the user could type in a couple chars and hit Enter, etc. and that should work too. Thus you should just watch for the session commit and go off that, not for Tab specifically. But regardless, we don't track the reason why the session was committed so I don't believe you could check for Tab at this time unless you watched a KeyDown or PreviewKeyDown event and set some flag if you saw Tab coming.