Fixed completions ordering, this time for real :)

This commit is contained in:
davits 2014-02-01 17:32:09 +04:00
parent 8520c5f5ac
commit 8619099756

View File

@ -18,6 +18,7 @@
import os import os
import re import re
from collections import defaultdict
from ycm.completers.completer import Completer from ycm.completers.completer import Completer
from ycm.completers.cpp.clang_completer import InCFamilyFile from ycm.completers.cpp.clang_completer import InCFamilyFile
@ -138,16 +139,20 @@ def _GetPathsStandardCase( path_dir, use_working_dir, filepath ):
def _GenerateCandidatesForPaths( absolute_paths ): def _GenerateCandidatesForPaths( absolute_paths ):
extra_info = dict() extra_info = defaultdict(int)
basenames = []
for absolute_path in absolute_paths: for absolute_path in absolute_paths:
basename = os.path.basename( absolute_path ) basename = os.path.basename( absolute_path )
if extra_info[ basename ] == 0:
basenames.append( basename )
is_dir = os.path.isdir( absolute_path ) is_dir = os.path.isdir( absolute_path )
extra_info[ basename ] = extra_info.get( basename, 0 ) | \ extra_info[ basename ] |= ( 2 if is_dir else 1 )
( 2 if is_dir else 1 )
completion_dicts = [] completion_dicts = []
for basename, value in extra_info.iteritems(): # Keep original ordering
for basename in basenames:
completion_dicts.append( completion_dicts.append(
responses.BuildCompletionData( basename, EXTRA_INFO_MAP[ value ] ) ) responses.BuildCompletionData( basename,
EXTRA_INFO_MAP[ extra_info[ basename ] ] ) )
return completion_dicts return completion_dicts