The problem is that jedi completer provides completions immediately after dot, so user query is empty. On other hand, ultisnips completer kicks in when user already typed a few characters, so completer should both cache all completions and return filtered results on the first call to CandidatesFromStoredRequest and that what i did here. This filtering is called only once to provide filtered completions on the first call to completer