Merge pull request #172 from zehrizzatti/multiple_filetypes

Fix for multiple filetypes set
This commit is contained in:
Val Markovic 2013-03-03 10:40:47 -08:00
commit e72652e463
3 changed files with 30 additions and 7 deletions

View File

@ -134,7 +134,7 @@ class Completer( object ):
if not line_length or start_column - 1 >= line_length: if not line_length or start_column - 1 >= line_length:
return False return False
filetype = vimsupport.CurrentFiletypes()[ 0 ] filetype = self._CurrentFiletype()
triggers = self.triggers_for_filetype[ filetype ] triggers = self.triggers_for_filetype[ filetype ]
for trigger in triggers: for trigger in triggers:
@ -266,6 +266,17 @@ class Completer( object ):
return False return False
def _CurrentFiletype( self ):
filetypes = vimsupport.CurrentFiletypes()
supported = self.SupportedFiletypes()
for filetype in filetypes:
if filetype in supported:
return filetype
return filetypes[0]
@abc.abstractmethod @abc.abstractmethod
def SupportedFiletypes( self ): def SupportedFiletypes( self ):
pass pass

View File

@ -246,5 +246,9 @@ def DiagnosticsToDiagStructure( diagnostics ):
def ClangAvailableForBuffer( buffer_object ): def ClangAvailableForBuffer( buffer_object ):
filetype = vim.eval( 'getbufvar({0}, "&ft")'.format( buffer_object.number ) ) filetypes = vim.eval( 'getbufvar({0}, "&ft")'.format( buffer_object.number ) )
return filetype in CLANG_FILETYPES supported_fts = [ft for ft in filetypes.split('.') if ft in CLANG_FILETYPES]
if supported_fts:
return True
else:
return False

View File

@ -60,12 +60,20 @@ class YouCompleteMe( object ):
def GetFiletypeCompleter( self ): def GetFiletypeCompleter( self ):
filetypes = vimsupport.CurrentFiletypes() filetypes = vimsupport.CurrentFiletypes()
for filetype in filetypes: completers = [self.GetFiletypeCompleterForFiletype( filetype )
completer = self.GetFiletypeCompleterForFiletype( filetype ) for filetype in filetypes ]
if completer:
return completer if not completers:
return None return None
# Try to find a native completer first
for completer in completers:
if completer and completer is not self.omnicomp:
return completer
# Return the omni completer for the first filetype
return completers[0]
def GetFiletypeCompleterForFiletype( self, filetype ): def GetFiletypeCompleterForFiletype( self, filetype ):
try: try: