Do not cache omnifunc on FileReadyToParse event
This commit is contained in:
parent
d299f9eb70
commit
600383fbac
@ -24,7 +24,6 @@ from builtins import * # noqa
|
|||||||
|
|
||||||
import vim
|
import vim
|
||||||
from ycm import vimsupport
|
from ycm import vimsupport
|
||||||
from ycmd import utils
|
|
||||||
from ycmd.completers.completer import Completer
|
from ycmd.completers.completer import Completer
|
||||||
from ycm.client.base_request import BaseRequest, HandleServerException
|
from ycm.client.base_request import BaseRequest, HandleServerException
|
||||||
|
|
||||||
@ -48,17 +47,15 @@ class OmniCompleter( Completer ):
|
|||||||
|
|
||||||
|
|
||||||
def ShouldUseNow( self, request_data ):
|
def ShouldUseNow( self, request_data ):
|
||||||
|
self._omnifunc = vimsupport.VimExpressionToPythonType( '&omnifunc' )
|
||||||
if not self._omnifunc:
|
if not self._omnifunc:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
if self.ShouldUseCache():
|
if self.ShouldUseCache():
|
||||||
return super( OmniCompleter, self ).ShouldUseNow( request_data )
|
return super( OmniCompleter, self ).ShouldUseNow( request_data )
|
||||||
return self.ShouldUseNowInner( request_data )
|
return self.ShouldUseNowInner( request_data )
|
||||||
|
|
||||||
|
|
||||||
def ShouldUseNowInner( self, request_data ):
|
def ShouldUseNowInner( self, request_data ):
|
||||||
if not self._omnifunc:
|
|
||||||
return False
|
|
||||||
if request_data.get( 'force_semantic', False ):
|
if request_data.get( 'force_semantic', False ):
|
||||||
return True
|
return True
|
||||||
return super( OmniCompleter, self ).ShouldUseNowInner( request_data )
|
return super( OmniCompleter, self ).ShouldUseNowInner( request_data )
|
||||||
@ -67,7 +64,6 @@ class OmniCompleter( Completer ):
|
|||||||
def ComputeCandidates( self, request_data ):
|
def ComputeCandidates( self, request_data ):
|
||||||
if self.ShouldUseCache():
|
if self.ShouldUseCache():
|
||||||
return super( OmniCompleter, self ).ComputeCandidates( request_data )
|
return super( OmniCompleter, self ).ComputeCandidates( request_data )
|
||||||
else:
|
|
||||||
if self.ShouldUseNowInner( request_data ):
|
if self.ShouldUseNowInner( request_data ):
|
||||||
return self.ComputeCandidatesInner( request_data )
|
return self.ComputeCandidatesInner( request_data )
|
||||||
return []
|
return []
|
||||||
@ -78,7 +74,7 @@ class OmniCompleter( Completer ):
|
|||||||
return []
|
return []
|
||||||
|
|
||||||
try:
|
try:
|
||||||
return_value = int( vim.eval( self._omnifunc + '(1,"")' ) )
|
return_value = vimsupport.GetIntValue( self._omnifunc + '(1,"")' )
|
||||||
if return_value < 0:
|
if return_value < 0:
|
||||||
# FIXME: Technically, if the return is -1 we should raise an error
|
# FIXME: Technically, if the return is -1 we should raise an error
|
||||||
return []
|
return []
|
||||||
@ -120,10 +116,6 @@ class OmniCompleter( Completer ):
|
|||||||
return []
|
return []
|
||||||
|
|
||||||
|
|
||||||
def OnFileReadyToParse( self, request_data ):
|
|
||||||
self._omnifunc = utils.ToUnicode( vim.eval( '&omnifunc' ) )
|
|
||||||
|
|
||||||
|
|
||||||
def FilterAndSortCandidatesInner( self, candidates, sort_property, query ):
|
def FilterAndSortCandidatesInner( self, candidates, sort_property, query ):
|
||||||
request_data = {
|
request_data = {
|
||||||
'candidates': candidates,
|
'candidates': candidates,
|
||||||
|
@ -47,8 +47,6 @@ def OmniCompleter_GetCompletions_Cache_List_test( ycm ):
|
|||||||
omnifunc = Omnifunc )
|
omnifunc = Omnifunc )
|
||||||
|
|
||||||
with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 5 ) ):
|
with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 5 ) ):
|
||||||
# Make sure there is an omnifunc set up.
|
|
||||||
ycm.OnFileReadyToParse()
|
|
||||||
ycm.SendCompletionRequest()
|
ycm.SendCompletionRequest()
|
||||||
assert_that(
|
assert_that(
|
||||||
ycm.GetCompletionResponse(),
|
ycm.GetCompletionResponse(),
|
||||||
@ -72,8 +70,6 @@ def OmniCompleter_GetCompletions_Cache_ListFilter_test( ycm ):
|
|||||||
omnifunc = Omnifunc )
|
omnifunc = Omnifunc )
|
||||||
|
|
||||||
with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 6 ) ):
|
with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 6 ) ):
|
||||||
# Make sure there is an omnifunc set up.
|
|
||||||
ycm.OnFileReadyToParse()
|
|
||||||
ycm.SendCompletionRequest()
|
ycm.SendCompletionRequest()
|
||||||
assert_that(
|
assert_that(
|
||||||
ycm.GetCompletionResponse(),
|
ycm.GetCompletionResponse(),
|
||||||
@ -97,8 +93,6 @@ def OmniCompleter_GetCompletions_NoCache_List_test( ycm ):
|
|||||||
omnifunc = Omnifunc )
|
omnifunc = Omnifunc )
|
||||||
|
|
||||||
with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 5 ) ):
|
with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 5 ) ):
|
||||||
# Make sure there is an omnifunc set up.
|
|
||||||
ycm.OnFileReadyToParse()
|
|
||||||
ycm.SendCompletionRequest()
|
ycm.SendCompletionRequest()
|
||||||
assert_that(
|
assert_that(
|
||||||
ycm.GetCompletionResponse(),
|
ycm.GetCompletionResponse(),
|
||||||
@ -122,8 +116,6 @@ def OmniCompleter_GetCompletions_NoCache_ListFilter_test( ycm ):
|
|||||||
omnifunc = Omnifunc )
|
omnifunc = Omnifunc )
|
||||||
|
|
||||||
with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 6 ) ):
|
with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 6 ) ):
|
||||||
# Make sure there is an omnifunc set up.
|
|
||||||
ycm.OnFileReadyToParse()
|
|
||||||
ycm.SendCompletionRequest()
|
ycm.SendCompletionRequest()
|
||||||
# Actual result is that the results are not filtered, as we expect the
|
# Actual result is that the results are not filtered, as we expect the
|
||||||
# omnifunc or vim itself to do this filtering.
|
# omnifunc or vim itself to do this filtering.
|
||||||
@ -149,8 +141,6 @@ def OmniCompleter_GetCompletions_NoCache_UseFindStart_test( ycm ):
|
|||||||
omnifunc = Omnifunc )
|
omnifunc = Omnifunc )
|
||||||
|
|
||||||
with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 6 ) ):
|
with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 6 ) ):
|
||||||
# Make sure there is an omnifunc set up.
|
|
||||||
ycm.OnFileReadyToParse()
|
|
||||||
ycm.SendCompletionRequest()
|
ycm.SendCompletionRequest()
|
||||||
# Actual result is that the results are not filtered, as we expect the
|
# Actual result is that the results are not filtered, as we expect the
|
||||||
# omnifunc or vim itself to do this filtering.
|
# omnifunc or vim itself to do this filtering.
|
||||||
@ -176,8 +166,6 @@ def OmniCompleter_GetCompletions_Cache_UseFindStart_test( ycm ):
|
|||||||
omnifunc = Omnifunc )
|
omnifunc = Omnifunc )
|
||||||
|
|
||||||
with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 6 ) ):
|
with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 6 ) ):
|
||||||
# Make sure there is an omnifunc set up.
|
|
||||||
ycm.OnFileReadyToParse()
|
|
||||||
ycm.SendCompletionRequest()
|
ycm.SendCompletionRequest()
|
||||||
# There are no results because the query 'test.t' doesn't match any
|
# There are no results because the query 'test.t' doesn't match any
|
||||||
# candidate (and cache_omnifunc=1, so we FilterAndSortCandidates).
|
# candidate (and cache_omnifunc=1, so we FilterAndSortCandidates).
|
||||||
@ -203,8 +191,6 @@ def OmniCompleter_GetCompletions_Cache_Object_test( ycm ):
|
|||||||
omnifunc = Omnifunc )
|
omnifunc = Omnifunc )
|
||||||
|
|
||||||
with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 6 ) ):
|
with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 6 ) ):
|
||||||
# Make sure there is an omnifunc set up.
|
|
||||||
ycm.OnFileReadyToParse()
|
|
||||||
ycm.SendCompletionRequest()
|
ycm.SendCompletionRequest()
|
||||||
assert_that(
|
assert_that(
|
||||||
ycm.GetCompletionResponse(),
|
ycm.GetCompletionResponse(),
|
||||||
@ -243,8 +229,6 @@ def OmniCompleter_GetCompletions_Cache_ObjectList_test( ycm ):
|
|||||||
omnifunc = Omnifunc )
|
omnifunc = Omnifunc )
|
||||||
|
|
||||||
with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 7 ) ):
|
with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 7 ) ):
|
||||||
# Make sure there is an omnifunc set up.
|
|
||||||
ycm.OnFileReadyToParse()
|
|
||||||
ycm.SendCompletionRequest()
|
ycm.SendCompletionRequest()
|
||||||
assert_that(
|
assert_that(
|
||||||
ycm.GetCompletionResponse(),
|
ycm.GetCompletionResponse(),
|
||||||
@ -289,8 +273,6 @@ def OmniCompleter_GetCompletions_NoCache_ObjectList_test( ycm ):
|
|||||||
omnifunc = Omnifunc )
|
omnifunc = Omnifunc )
|
||||||
|
|
||||||
with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 7 ) ):
|
with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 7 ) ):
|
||||||
# Make sure there is an omnifunc set up.
|
|
||||||
ycm.OnFileReadyToParse()
|
|
||||||
ycm.SendCompletionRequest()
|
ycm.SendCompletionRequest()
|
||||||
# We don't filter the result - we expect the omnifunc to do that
|
# 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!).
|
# 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 )
|
omnifunc = Omnifunc )
|
||||||
|
|
||||||
with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 7 ) ):
|
with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 7 ) ):
|
||||||
# Make sure there is an omnifunc set up.
|
|
||||||
ycm.OnFileReadyToParse()
|
|
||||||
ycm.SendCompletionRequest()
|
ycm.SendCompletionRequest()
|
||||||
assert_that(
|
assert_that(
|
||||||
ycm.GetCompletionResponse(),
|
ycm.GetCompletionResponse(),
|
||||||
@ -389,8 +369,6 @@ def OmniCompleter_GetCompletions_NoCache_ObjectListObject_test( ycm ):
|
|||||||
omnifunc = Omnifunc )
|
omnifunc = Omnifunc )
|
||||||
|
|
||||||
with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 7 ) ):
|
with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 7 ) ):
|
||||||
# Make sure there is an omnifunc set up.
|
|
||||||
ycm.OnFileReadyToParse()
|
|
||||||
ycm.SendCompletionRequest()
|
ycm.SendCompletionRequest()
|
||||||
# No FilterAndSortCandidates for cache_omnifunc=0 (we expect the omnifunc
|
# No FilterAndSortCandidates for cache_omnifunc=0 (we expect the omnifunc
|
||||||
# to do the filtering?)
|
# to do the filtering?)
|
||||||
@ -428,8 +406,6 @@ def OmniCompleter_GetCompletions_Cache_List_Unicode_test( ycm ):
|
|||||||
omnifunc = Omnifunc )
|
omnifunc = Omnifunc )
|
||||||
|
|
||||||
with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 12 ) ):
|
with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 12 ) ):
|
||||||
# Make sure there is an omnifunc set up.
|
|
||||||
ycm.OnFileReadyToParse()
|
|
||||||
ycm.SendCompletionRequest()
|
ycm.SendCompletionRequest()
|
||||||
assert_that(
|
assert_that(
|
||||||
ycm.GetCompletionResponse(),
|
ycm.GetCompletionResponse(),
|
||||||
@ -455,8 +431,6 @@ def OmniCompleter_GetCompletions_NoCache_List_Unicode_test( ycm ):
|
|||||||
omnifunc = Omnifunc )
|
omnifunc = Omnifunc )
|
||||||
|
|
||||||
with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 12 ) ):
|
with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 12 ) ):
|
||||||
# Make sure there is an omnifunc set up.
|
|
||||||
ycm.OnFileReadyToParse()
|
|
||||||
ycm.SendCompletionRequest()
|
ycm.SendCompletionRequest()
|
||||||
assert_that(
|
assert_that(
|
||||||
ycm.GetCompletionResponse(),
|
ycm.GetCompletionResponse(),
|
||||||
@ -484,8 +458,6 @@ def OmniCompleter_GetCompletions_Cache_List_Filter_Unicode_test( ycm ):
|
|||||||
omnifunc = Omnifunc )
|
omnifunc = Omnifunc )
|
||||||
|
|
||||||
with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 17 ) ):
|
with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 17 ) ):
|
||||||
# Make sure there is an omnifunc set up.
|
|
||||||
ycm.OnFileReadyToParse()
|
|
||||||
ycm.SendCompletionRequest()
|
ycm.SendCompletionRequest()
|
||||||
assert_that(
|
assert_that(
|
||||||
ycm.GetCompletionResponse(),
|
ycm.GetCompletionResponse(),
|
||||||
@ -509,8 +481,6 @@ def OmniCompleter_GetCompletions_NoCache_List_Filter_Unicode_test( ycm ):
|
|||||||
omnifunc = Omnifunc )
|
omnifunc = Omnifunc )
|
||||||
|
|
||||||
with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 17 ) ):
|
with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 17 ) ):
|
||||||
# Make sure there is an omnifunc set up.
|
|
||||||
ycm.OnFileReadyToParse()
|
|
||||||
ycm.SendCompletionRequest()
|
ycm.SendCompletionRequest()
|
||||||
assert_that(
|
assert_that(
|
||||||
ycm.GetCompletionResponse(),
|
ycm.GetCompletionResponse(),
|
||||||
@ -551,8 +521,6 @@ def OmniCompleter_GetCompletions_Cache_ObjectList_Unicode_test( ycm ):
|
|||||||
omnifunc = Omnifunc )
|
omnifunc = Omnifunc )
|
||||||
|
|
||||||
with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 17 ) ):
|
with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 17 ) ):
|
||||||
# Make sure there is an omnifunc set up.
|
|
||||||
ycm.OnFileReadyToParse()
|
|
||||||
ycm.SendCompletionRequest()
|
ycm.SendCompletionRequest()
|
||||||
assert_that(
|
assert_that(
|
||||||
ycm.GetCompletionResponse(),
|
ycm.GetCompletionResponse(),
|
||||||
@ -606,8 +574,6 @@ def OmniCompleter_GetCompletions_Cache_ObjectListObject_Unicode_test( ycm ):
|
|||||||
omnifunc = Omnifunc )
|
omnifunc = Omnifunc )
|
||||||
|
|
||||||
with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 13 ) ):
|
with MockVimBuffers( [ current_buffer ], current_buffer, ( 1, 13 ) ):
|
||||||
# Make sure there is an omnifunc set up.
|
|
||||||
ycm.OnFileReadyToParse()
|
|
||||||
ycm.SendCompletionRequest()
|
ycm.SendCompletionRequest()
|
||||||
assert_that(
|
assert_that(
|
||||||
ycm.GetCompletionResponse(),
|
ycm.GetCompletionResponse(),
|
||||||
|
@ -365,8 +365,6 @@ class YouCompleteMe( object ):
|
|||||||
if not self.IsServerReady():
|
if not self.IsServerReady():
|
||||||
return
|
return
|
||||||
|
|
||||||
self._omnicomp.OnFileReadyToParse( None )
|
|
||||||
|
|
||||||
extra_data = {}
|
extra_data = {}
|
||||||
self._AddTagsFilesIfNeeded( extra_data )
|
self._AddTagsFilesIfNeeded( extra_data )
|
||||||
self._AddSyntaxDataIfNeeded( extra_data )
|
self._AddSyntaxDataIfNeeded( extra_data )
|
||||||
|
Loading…
x
Reference in New Issue
Block a user