Ident completer loads syntax keywords again
This commit is contained in:
parent
c527cda436
commit
3b9b9ed036
@ -37,7 +37,6 @@ class IdentifierCompleter( GeneralCompleter ):
|
|||||||
self.completer = ycm_core.IdentifierCompleter()
|
self.completer = ycm_core.IdentifierCompleter()
|
||||||
self.completer.EnableThreading()
|
self.completer.EnableThreading()
|
||||||
self.tags_file_last_mtime = defaultdict( int )
|
self.tags_file_last_mtime = defaultdict( int )
|
||||||
self.filetypes_with_keywords_loaded = set()
|
|
||||||
self._logger = logging.getLogger( __name__ )
|
self._logger = logging.getLogger( __name__ )
|
||||||
|
|
||||||
|
|
||||||
@ -124,29 +123,23 @@ class IdentifierCompleter( GeneralCompleter ):
|
|||||||
absolute_paths_to_tag_files )
|
absolute_paths_to_tag_files )
|
||||||
|
|
||||||
|
|
||||||
# def AddIdentifiersFromSyntax( self ):
|
def AddIdentifiersFromSyntax( self, keyword_list, filetypes ):
|
||||||
# filetype = vim.eval( "&filetype" )
|
keyword_vector = ycm_core.StringVec()
|
||||||
# if filetype in self.filetypes_with_keywords_loaded:
|
for keyword in keyword_list:
|
||||||
# return
|
keyword_vector.append( ToUtf8IfNeeded( keyword ) )
|
||||||
|
|
||||||
# self.filetypes_with_keywords_loaded.add( filetype )
|
|
||||||
|
|
||||||
# keyword_set = syntax_parse.SyntaxKeywordsForCurrentBuffer()
|
|
||||||
# keywords = ycm_core.StringVec()
|
|
||||||
# for keyword in keyword_set:
|
|
||||||
# keywords.append( keyword )
|
|
||||||
|
|
||||||
# filepath = SYNTAX_FILENAME + filetype
|
|
||||||
# self.completer.AddIdentifiersToDatabase( keywords,
|
|
||||||
# filetype,
|
|
||||||
# filepath )
|
|
||||||
|
|
||||||
|
filepath = SYNTAX_FILENAME + filetypes[ 0 ]
|
||||||
|
self.completer.AddIdentifiersToDatabase( keyword_vector,
|
||||||
|
ToUtf8IfNeeded( filetypes[ 0 ] ),
|
||||||
|
ToUtf8IfNeeded( filepath ) )
|
||||||
|
|
||||||
def OnFileReadyToParse( self, request_data ):
|
def OnFileReadyToParse( self, request_data ):
|
||||||
self.AddBufferIdentifiers( request_data )
|
self.AddBufferIdentifiers( request_data )
|
||||||
if 'tag_files' in request_data:
|
if 'tag_files' in request_data:
|
||||||
self.AddIdentifiersFromTagFiles( request_data[ 'tag_files' ] )
|
self.AddIdentifiersFromTagFiles( request_data[ 'tag_files' ] )
|
||||||
#self.AddIdentifiersFromSyntax()
|
if 'syntax_keywords' in request_data:
|
||||||
|
self.AddIdentifiersFromSyntax( request_data[ 'syntax_keywords' ],
|
||||||
|
request_data[ 'filetypes' ] )
|
||||||
|
|
||||||
|
|
||||||
def OnInsertLeave( self, request_data ):
|
def OnInsertLeave( self, request_data ):
|
||||||
|
@ -42,7 +42,7 @@ def GetCompletions_IdentifierCompleterWorks_test():
|
|||||||
|
|
||||||
app.post_json( '/event_notification', event_data )
|
app.post_json( '/event_notification', event_data )
|
||||||
|
|
||||||
line_value = 'oo foo foogoo ba';
|
line_value = 'oo foo foogoo ba'
|
||||||
completion_data = {
|
completion_data = {
|
||||||
'query': 'oo',
|
'query': 'oo',
|
||||||
'filetypes': ['foo'],
|
'filetypes': ['foo'],
|
||||||
@ -64,6 +64,45 @@ def GetCompletions_IdentifierCompleterWorks_test():
|
|||||||
app.post_json( '/get_completions', completion_data ).json )
|
app.post_json( '/get_completions', completion_data ).json )
|
||||||
|
|
||||||
|
|
||||||
|
def GetCompletions_IdentifierCompleter_SyntaxKeywordsAdded_test():
|
||||||
|
app = TestApp( server.app )
|
||||||
|
event_data = {
|
||||||
|
'event_name': 'FileReadyToParse',
|
||||||
|
'filetypes': ['foo'],
|
||||||
|
'filepath': '/foo/bar',
|
||||||
|
'file_data': {
|
||||||
|
'/foo/bar': {
|
||||||
|
'contents': '',
|
||||||
|
'filetypes': ['foo']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'syntax_keywords': ['foo', 'bar', 'zoo']
|
||||||
|
}
|
||||||
|
|
||||||
|
app.post_json( '/event_notification', event_data )
|
||||||
|
|
||||||
|
line_value = 'oo '
|
||||||
|
completion_data = {
|
||||||
|
'query': 'oo',
|
||||||
|
'filetypes': ['foo'],
|
||||||
|
'filepath': '/foo/bar',
|
||||||
|
'line_num': 0,
|
||||||
|
'column_num': 2,
|
||||||
|
'start_column': 0,
|
||||||
|
'line_value': line_value,
|
||||||
|
'file_data': {
|
||||||
|
'/foo/bar': {
|
||||||
|
'contents': line_value,
|
||||||
|
'filetypes': ['foo']
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
eq_( [ BuildCompletionData( 'foo' ),
|
||||||
|
BuildCompletionData( 'zoo' ) ],
|
||||||
|
app.post_json( '/get_completions', completion_data ).json )
|
||||||
|
|
||||||
|
|
||||||
def FiletypeCompletionAvailable_Works_test():
|
def FiletypeCompletionAvailable_Works_test():
|
||||||
app = TestApp( server.app )
|
app = TestApp( server.app )
|
||||||
request_data = {
|
request_data = {
|
||||||
|
@ -25,6 +25,7 @@ import subprocess
|
|||||||
from ycm import vimsupport
|
from ycm import vimsupport
|
||||||
from ycm import utils
|
from ycm import utils
|
||||||
from ycm.completers.all.omni_completer import OmniCompleter
|
from ycm.completers.all.omni_completer import OmniCompleter
|
||||||
|
from ycm.completers.general import syntax_parse
|
||||||
from ycm.client.base_request import BaseRequest
|
from ycm.client.base_request import BaseRequest
|
||||||
from ycm.client.command_request import CommandRequest
|
from ycm.client.command_request import CommandRequest
|
||||||
from ycm.client.completion_request import CompletionRequest
|
from ycm.client.completion_request import CompletionRequest
|
||||||
@ -40,6 +41,7 @@ class YouCompleteMe( object ):
|
|||||||
self._server_stdout = None
|
self._server_stdout = None
|
||||||
self._server_stderr = None
|
self._server_stderr = None
|
||||||
self._server_popen = None
|
self._server_popen = None
|
||||||
|
self._filetypes_with_keywords_loaded = set()
|
||||||
self._SetupServer()
|
self._SetupServer()
|
||||||
|
|
||||||
|
|
||||||
@ -127,8 +129,8 @@ class YouCompleteMe( object ):
|
|||||||
if self._user_options[ 'collect_identifiers_from_tags_files' ]:
|
if self._user_options[ 'collect_identifiers_from_tags_files' ]:
|
||||||
extra_data[ 'tag_files' ] = _GetTagFiles()
|
extra_data[ 'tag_files' ] = _GetTagFiles()
|
||||||
|
|
||||||
# TODO: make this work again
|
if self._user_options[ 'seed_identifiers_with_syntax' ]:
|
||||||
# if self._user_options[ 'seed_identifiers_with_syntax' ]:
|
self._AddSyntaxDataIfNeeded( extra_data )
|
||||||
|
|
||||||
SendEventNotificationAsync( 'FileReadyToParse', extra_data )
|
SendEventNotificationAsync( 'FileReadyToParse', extra_data )
|
||||||
|
|
||||||
@ -210,6 +212,15 @@ class YouCompleteMe( object ):
|
|||||||
return not all([ x in filetype_to_disable for x in filetypes ])
|
return not all([ x in filetype_to_disable for x in filetypes ])
|
||||||
|
|
||||||
|
|
||||||
|
def _AddSyntaxDataIfNeeded( self, extra_data ):
|
||||||
|
filetype = vimsupport.CurrentFiletypes()[ 0 ]
|
||||||
|
if filetype in self._filetypes_with_keywords_loaded:
|
||||||
|
return
|
||||||
|
|
||||||
|
self._filetypes_with_keywords_loaded.add( filetype )
|
||||||
|
extra_data[ 'syntax_keywords' ] = list(
|
||||||
|
syntax_parse.SyntaxKeywordsForCurrentBuffer() )
|
||||||
|
|
||||||
|
|
||||||
def _GetTagFiles():
|
def _GetTagFiles():
|
||||||
tag_files = vim.eval( 'tagfiles()' )
|
tag_files = vim.eval( 'tagfiles()' )
|
||||||
@ -220,3 +231,4 @@ def _GetTagFiles():
|
|||||||
def _PathToServerScript():
|
def _PathToServerScript():
|
||||||
dir_of_current_script = os.path.dirname( os.path.abspath( __file__ ) )
|
dir_of_current_script = os.path.dirname( os.path.abspath( __file__ ) )
|
||||||
return os.path.join( dir_of_current_script, 'server/server.py' )
|
return os.path.join( dir_of_current_script, 'server/server.py' )
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user