private IEnumerable <Completion> GetCompletions(string[] lines) { var matches = lines.Where(l => l.StartsWith("MATCH")).Distinct(StringComparer.Ordinal); foreach (var matchLine in matches) { var tokens = matchLine.Substring(6).Split(','); var text = tokens[0]; var langElemText = tokens[4]; var descriptionStartIndex = tokens[0].Length + tokens[1].Length + tokens[2].Length + tokens[3].Length + tokens[4].Length + 11; var description = matchLine.Substring(descriptionStartIndex); CompletableLanguageElement elType; if (!Enum.TryParse(langElemText, out elType)) { ProjectUtil.DebugPrintToOutput("Failed to parse language element found in racer autocomplete response: {0}", langElemText); continue; } var insertionText = text; var icon = GetCompletionIcon(elType); yield return(new Completion(text, insertionText, description, icon, "")); } }
private ImageSource GetCompletionIcon(CompletableLanguageElement elType) { switch (elType) { case CompletableLanguageElement.Struct: return(glyphService.GetGlyph(StandardGlyphGroup.GlyphGroupStruct, StandardGlyphItem.GlyphItemPublic)); case CompletableLanguageElement.Module: return(glyphService.GetGlyph(StandardGlyphGroup.GlyphAssembly, StandardGlyphItem.GlyphItemPublic)); case CompletableLanguageElement.Function: return(glyphService.GetGlyph(StandardGlyphGroup.GlyphExtensionMethod, StandardGlyphItem.GlyphItemPublic)); case CompletableLanguageElement.Crate: return(glyphService.GetGlyph(StandardGlyphGroup.GlyphAssembly, StandardGlyphItem.GlyphItemPublic)); case CompletableLanguageElement.Let: return(glyphService.GetGlyph(StandardGlyphGroup.GlyphGroupConstant, StandardGlyphItem.GlyphItemPublic)); case CompletableLanguageElement.StructField: return(glyphService.GetGlyph(StandardGlyphGroup.GlyphGroupField, StandardGlyphItem.GlyphItemPublic)); case CompletableLanguageElement.Impl: return(glyphService.GetGlyph(StandardGlyphGroup.GlyphGroupTypedef, StandardGlyphItem.GlyphItemPublic)); case CompletableLanguageElement.Enum: return(glyphService.GetGlyph(StandardGlyphGroup.GlyphGroupEnum, StandardGlyphItem.GlyphItemPublic)); case CompletableLanguageElement.EnumVariant: return(glyphService.GetGlyph(StandardGlyphGroup.GlyphGroupEnumMember, StandardGlyphItem.GlyphItemPublic)); case CompletableLanguageElement.Type: return(glyphService.GetGlyph(StandardGlyphGroup.GlyphGroupTypedef, StandardGlyphItem.GlyphItemPublic)); case CompletableLanguageElement.Trait: return(glyphService.GetGlyph(StandardGlyphGroup.GlyphGroupInterface, StandardGlyphItem.GlyphItemPublic)); case CompletableLanguageElement.Static: return(null); case CompletableLanguageElement.FnArg: return(null); default: ProjectUtil.DebugPrintToOutput("Unhandled language element found in racer autocomplete response: {0}", elType); return(null); } }