@@ -642,18 +642,20 @@ void setCompletions(T)(ref AutocompleteResponse response,
642642 if (symbols.length == 0 )
643643 return ;
644644 }
645- TTree! (ACSymbol* , true , " a < b" , false ) parts;
646- parts.insert(symbols[0 ].parts[]);
647- foreach (s; symbols[0 ].aliasThisParts[])
648- parts.insert(s.parts[]);
649- foreach (s; parts[].filter! (a => a.name ! is null
650- && a.name.length > 0 && a.name[0 ] != ' *'
651- && (partial is null ? true : a.name.toUpper().startsWith(partial.toUpper()))
652- && ! response.completions.canFind(a.name)))
645+ foreach (sym; symbols[0 ].parts[])
653646 {
654- // Log.trace("Adding ", s.name, " to the completion list");
655- response.completionKinds ~= s.kind;
656- response.completions ~= s.name.dup ;
647+ if (sym.kind == CompletionKind.importSymbol) foreach (s; sym.type.parts[])
648+ {
649+ response.completionKinds ~= s.kind;
650+ response.completions ~= s.name.dup ;
651+ }
652+ else if (sym.name ! is null && sym.name.length > 0 && sym.name[0 ] != ' *'
653+ && (partial is null ? true : sym.name.toUpper().startsWith(partial.toUpper()))
654+ && ! response.completions.canFind(sym.name))
655+ {
656+ response.completionKinds ~= sym.kind;
657+ response.completions ~= sym.name.dup ;
658+ }
657659 }
658660 response.completionType = CompletionType.identifiers;
659661 }
@@ -865,10 +867,14 @@ void setImportCompletions(T)(T tokens, ref AutocompleteResponse response)
865867 }
866868 else if (isDir(name))
867869 {
868- response.completions ~= name.baseName();
869- response.completionKinds ~=
870- exists(buildPath(name, " package.d" )) || exists(buildPath(name, " package.di" ))
871- ? CompletionKind.moduleName : CompletionKind.packageName;
870+ string n = name.baseName();
871+ if (n[0 ] != ' .' )
872+ {
873+ response.completions ~= n;
874+ response.completionKinds ~=
875+ exists(buildPath(name, " package.d" )) || exists(buildPath(name, " package.di" ))
876+ ? CompletionKind.moduleName : CompletionKind.packageName;
877+ }
872878 }
873879 }
874880 }
0 commit comments