diff --git a/python/completers/cpp/clang_completer.py b/python/completers/cpp/clang_completer.py index 4fc93a1c..a934f339 100644 --- a/python/completers/cpp/clang_completer.py +++ b/python/completers/cpp/clang_completer.py @@ -246,9 +246,6 @@ def DiagnosticsToDiagStructure( diagnostics ): def ClangAvailableForBuffer( buffer_object ): - filetypes = vim.eval( 'getbufvar({0}, "&ft")'.format( buffer_object.number ) ) - supported_fts = [ft for ft in filetypes.split('.') if ft in CLANG_FILETYPES] - if supported_fts: - return True - else: - return False + filetypes = vimsupport.FiletypesForBuffer( buffer_object ) + return any( [ filetype in CLANG_FILETYPES for filetype in filetypes ] ) + diff --git a/python/vimsupport.py b/python/vimsupport.py index 75e15218..5a720c7b 100644 --- a/python/vimsupport.py +++ b/python/vimsupport.py @@ -104,6 +104,13 @@ def CurrentFiletypes(): return ft_string.split( '.' ) +def FiletypesForBuffer( buffer_object ): + # NOTE: Getting &ft for other buffers only works when the buffer has been + # visited by the user at least once, which is true for modified buffers + ft_string = vim.eval( 'getbufvar({0}, "&ft")'.format( buffer_object.number ) ) + return ft_string.split( '.' ) + + def GetVariableValue( variable ): return vim.eval( variable )