From 600383fbac28d08034fd7d82a264e28717aad23d Mon Sep 17 00:00:00 2001 From: micbou Date: Wed, 30 Nov 2016 21:06:51 +0100 Subject: [PATCH] Do not cache omnifunc on FileReadyToParse event --- python/ycm/omni_completer.py | 18 ++++--------- python/ycm/tests/omni_completer_test.py | 34 ------------------------- python/ycm/youcompleteme.py | 2 -- 3 files changed, 5 insertions(+), 49 deletions(-) diff --git a/python/ycm/omni_completer.py b/python/ycm/omni_completer.py index 6d605938..b4cc7268 100644 --- a/python/ycm/omni_completer.py +++ b/python/ycm/omni_completer.py @@ -24,7 +24,6 @@ from builtins import * # noqa import vim from ycm import vimsupport -from ycmd import utils from ycmd.completers.completer import Completer from ycm.client.base_request import BaseRequest, HandleServerException @@ -48,17 +47,15 @@ class OmniCompleter( Completer ): def ShouldUseNow( self, request_data ): + self._omnifunc = vimsupport.VimExpressionToPythonType( '&omnifunc' ) if not self._omnifunc: return False - if self.ShouldUseCache(): return super( OmniCompleter, self ).ShouldUseNow( request_data ) return self.ShouldUseNowInner( request_data ) def ShouldUseNowInner( self, request_data ): - if not self._omnifunc: - return False if request_data.get( 'force_semantic', False ): return True return super( OmniCompleter, self ).ShouldUseNowInner( request_data ) @@ -67,10 +64,9 @@ class OmniCompleter( Completer ): def ComputeCandidates( self, request_data ): if self.ShouldUseCache(): return super( OmniCompleter, self ).ComputeCandidates( request_data ) - else: - if self.ShouldUseNowInner( request_data ): - return self.ComputeCandidatesInner( request_data ) - return [] + if self.ShouldUseNowInner( request_data ): + return self.ComputeCandidatesInner( request_data ) + return [] def ComputeCandidatesInner( self, request_data ): @@ -78,7 +74,7 @@ class OmniCompleter( Completer ): return [] try: - return_value = int( vim.eval( self._omnifunc + '(1,"")' ) ) + return_value = vimsupport.GetIntValue( self._omnifunc + '(1,"")' ) if return_value < 0: # FIXME: Technically, if the return is -1 we should raise an error return [] @@ -120,10 +116,6 @@ class OmniCompleter( Completer ): return [] - def OnFileReadyToParse( self, request_data ): - self._omnifunc = utils.ToUnicode( vim.eval( '&omnifunc' ) ) - - def FilterAndSortCandidatesInner( self, candidates, sort_property, query ): request_data = { 'candidates': candidates, diff --git a/python/ycm/tests/omni_completer_test.py b/python/ycm/tests/omni_completer_test.py index e8e02b5a..aeb96091 100644 --- a/python/ycm/tests/omni_completer_test.py +++ b/python/ycm/tests/omni_completer_test.py @@ -47,8 +47,6 @@ def OmniCompleter_GetCompletions_Cache_List_test( ycm ): omnifunc = Omnifunc ) with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 5 ) ): - # Make sure there is an omnifunc set up. - ycm.OnFileReadyToParse() ycm.SendCompletionRequest() assert_that( ycm.GetCompletionResponse(), @@ -72,8 +70,6 @@ def OmniCompleter_GetCompletions_Cache_ListFilter_test( ycm ): omnifunc = Omnifunc ) with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 6 ) ): - # Make sure there is an omnifunc set up. - ycm.OnFileReadyToParse() ycm.SendCompletionRequest() assert_that( ycm.GetCompletionResponse(), @@ -97,8 +93,6 @@ def OmniCompleter_GetCompletions_NoCache_List_test( ycm ): omnifunc = Omnifunc ) with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 5 ) ): - # Make sure there is an omnifunc set up. - ycm.OnFileReadyToParse() ycm.SendCompletionRequest() assert_that( ycm.GetCompletionResponse(), @@ -122,8 +116,6 @@ def OmniCompleter_GetCompletions_NoCache_ListFilter_test( ycm ): omnifunc = Omnifunc ) with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 6 ) ): - # Make sure there is an omnifunc set up. - ycm.OnFileReadyToParse() ycm.SendCompletionRequest() # Actual result is that the results are not filtered, as we expect the # omnifunc or vim itself to do this filtering. @@ -149,8 +141,6 @@ def OmniCompleter_GetCompletions_NoCache_UseFindStart_test( ycm ): omnifunc = Omnifunc ) with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 6 ) ): - # Make sure there is an omnifunc set up. - ycm.OnFileReadyToParse() ycm.SendCompletionRequest() # Actual result is that the results are not filtered, as we expect the # omnifunc or vim itself to do this filtering. @@ -176,8 +166,6 @@ def OmniCompleter_GetCompletions_Cache_UseFindStart_test( ycm ): omnifunc = Omnifunc ) with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 6 ) ): - # Make sure there is an omnifunc set up. - ycm.OnFileReadyToParse() ycm.SendCompletionRequest() # There are no results because the query 'test.t' doesn't match any # candidate (and cache_omnifunc=1, so we FilterAndSortCandidates). @@ -203,8 +191,6 @@ def OmniCompleter_GetCompletions_Cache_Object_test( ycm ): omnifunc = Omnifunc ) with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 6 ) ): - # Make sure there is an omnifunc set up. - ycm.OnFileReadyToParse() ycm.SendCompletionRequest() assert_that( ycm.GetCompletionResponse(), @@ -243,8 +229,6 @@ def OmniCompleter_GetCompletions_Cache_ObjectList_test( ycm ): omnifunc = Omnifunc ) with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 7 ) ): - # Make sure there is an omnifunc set up. - ycm.OnFileReadyToParse() ycm.SendCompletionRequest() assert_that( ycm.GetCompletionResponse(), @@ -289,8 +273,6 @@ def OmniCompleter_GetCompletions_NoCache_ObjectList_test( ycm ): omnifunc = Omnifunc ) with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 7 ) ): - # Make sure there is an omnifunc set up. - ycm.OnFileReadyToParse() ycm.SendCompletionRequest() # We don't filter the result - we expect the omnifunc to do that # based on the query we supplied (Note: that means no fuzzy matching!). @@ -343,8 +325,6 @@ def OmniCompleter_GetCompletions_Cache_ObjectListObject_test( ycm ): omnifunc = Omnifunc ) with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 7 ) ): - # Make sure there is an omnifunc set up. - ycm.OnFileReadyToParse() ycm.SendCompletionRequest() assert_that( ycm.GetCompletionResponse(), @@ -389,8 +369,6 @@ def OmniCompleter_GetCompletions_NoCache_ObjectListObject_test( ycm ): omnifunc = Omnifunc ) with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 7 ) ): - # Make sure there is an omnifunc set up. - ycm.OnFileReadyToParse() ycm.SendCompletionRequest() # No FilterAndSortCandidates for cache_omnifunc=0 (we expect the omnifunc # to do the filtering?) @@ -428,8 +406,6 @@ def OmniCompleter_GetCompletions_Cache_List_Unicode_test( ycm ): omnifunc = Omnifunc ) with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 12 ) ): - # Make sure there is an omnifunc set up. - ycm.OnFileReadyToParse() ycm.SendCompletionRequest() assert_that( ycm.GetCompletionResponse(), @@ -455,8 +431,6 @@ def OmniCompleter_GetCompletions_NoCache_List_Unicode_test( ycm ): omnifunc = Omnifunc ) with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 12 ) ): - # Make sure there is an omnifunc set up. - ycm.OnFileReadyToParse() ycm.SendCompletionRequest() assert_that( ycm.GetCompletionResponse(), @@ -484,8 +458,6 @@ def OmniCompleter_GetCompletions_Cache_List_Filter_Unicode_test( ycm ): omnifunc = Omnifunc ) with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 17 ) ): - # Make sure there is an omnifunc set up. - ycm.OnFileReadyToParse() ycm.SendCompletionRequest() assert_that( ycm.GetCompletionResponse(), @@ -509,8 +481,6 @@ def OmniCompleter_GetCompletions_NoCache_List_Filter_Unicode_test( ycm ): omnifunc = Omnifunc ) with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 17 ) ): - # Make sure there is an omnifunc set up. - ycm.OnFileReadyToParse() ycm.SendCompletionRequest() assert_that( ycm.GetCompletionResponse(), @@ -551,8 +521,6 @@ def OmniCompleter_GetCompletions_Cache_ObjectList_Unicode_test( ycm ): omnifunc = Omnifunc ) with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 17 ) ): - # Make sure there is an omnifunc set up. - ycm.OnFileReadyToParse() ycm.SendCompletionRequest() assert_that( ycm.GetCompletionResponse(), @@ -606,8 +574,6 @@ def OmniCompleter_GetCompletions_Cache_ObjectListObject_Unicode_test( ycm ): omnifunc = Omnifunc ) with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 13 ) ): - # Make sure there is an omnifunc set up. - ycm.OnFileReadyToParse() ycm.SendCompletionRequest() assert_that( ycm.GetCompletionResponse(), diff --git a/python/ycm/youcompleteme.py b/python/ycm/youcompleteme.py index ba2e27fa..f2087d81 100644 --- a/python/ycm/youcompleteme.py +++ b/python/ycm/youcompleteme.py @@ -365,8 +365,6 @@ class YouCompleteMe( object ): if not self.IsServerReady(): return - self._omnicomp.OnFileReadyToParse( None ) - extra_data = {} self._AddTagsFilesIfNeeded( extra_data ) self._AddSyntaxDataIfNeeded( extra_data )