Ejemplo n.º 1
0
        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, ""));
            }
        }
Ejemplo n.º 2
0
        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);
            }
        }