public IEnumerable<JSONCompletionEntry> GetListEntries(JSONCompletionContext context)
        {
            if (!IsBandManifest(context.ContextItem))
                yield break;

            JSONMember member = context.ContextItem as JSONMember;

            if (member == null || member.UnquotedNameText != "icon")
                yield break;

            var icons = GetIcons(member);

            if (icons.Count == 0)
                yield break;

            string folder = Path.GetDirectoryName(member.JSONDocument.DocumentLocation);
            Telemetry.TrackEvent("Icon completion");

            foreach (var icon in icons)
            {
                string path = Path.Combine(folder, icon.Value);

                if (File.Exists(path))
                {
                    var image = BitmapFrame.Create(new Uri(path, UriKind.Absolute));
                    yield return new SimpleCompletionEntry(icon.Key, "\"" + icon.Key + "\"", image, context.Session);
                }
                else
                {
                    yield return new SimpleCompletionEntry(icon.Key, "\"" + icon.Key + "\"", "\"" + icon.Value + "\"", context.Session);
                }
            }
        }
        public IEnumerable<JSONCompletionEntry> GetListEntries(JSONCompletionContext context)
        {
            ITextDocument document;
            if (TextDocumentFactoryService.TryGetTextDocument(context.Snapshot.TextBuffer, out document))
            {
                string fileName = Path.GetFileName(document.FilePath).ToLowerInvariant();

                if (string.IsNullOrEmpty(fileName) || !fileName.Equals(Constants.FILENAME, StringComparison.OrdinalIgnoreCase))
                    yield break;
            }
            else
            {
                yield break;
            }

            JSONMember member = context.ContextItem.Parent?.FindType<JSONMember>();

            if (member == null || member.UnquotedNameText != Constants.ELEMENT_NAME)
                yield break;

            yield return new SimpleCompletionEntry("AfterBuild", "Fires after the MSBuild process ended.", _glyph, context.Session);
            yield return new SimpleCompletionEntry("BeforeBuild", "Fires before the MSBuild process ended.", _glyph, context.Session);
            yield return new SimpleCompletionEntry("Clean", "Fires after the MSBuild 'Clean' process ended.", _glyph, context.Session);
            yield return new SimpleCompletionEntry("ProjectOpen", "Fires when the project is opened in Visual Studio.", _glyph, context.Session);
        }
示例#3
0
        public IEnumerable <JSONCompletionEntry> GetListEntries(JSONCompletionContext context)
        {
            ITextDocument document;

            if (TextDocumentFactoryService.TryGetTextDocument(context.Snapshot.TextBuffer, out document))
            {
                string fileName = Path.GetFileName(document.FilePath).ToLowerInvariant();

                if (string.IsNullOrEmpty(fileName) || !fileName.Equals(Constants.FILENAME, StringComparison.OrdinalIgnoreCase))
                {
                    yield break;
                }
            }
            else
            {
                yield break;
            }

            JSONMember member = context.ContextItem.FindType <JSONMember>();

            while (member != null && member.Parent != null && member.UnquotedNameText != Constants.ELEMENT_NAME)
            {
                member = member.Parent.FindType <JSONMember>();
            }

            if (member == null || member.UnquotedNameText != Constants.ELEMENT_NAME)
            {
                yield break;
            }

            foreach (var task in GetTasks(context.ContextItem.JSONDocument))
            {
                yield return(new SimpleCompletionEntry(task.Item1, task.Item2, StandardGlyphGroup.GlyphGroupEvent, context.Session));
            }
        }
        public IEnumerable <JSONCompletionEntry> GetListEntries(JSONCompletionContext context)
        {
            JSONMember member = context.ContextItem as JSONMember;

            if (member == null || member.Name == null || member.Name.Text != "\"$ref\"" || member.JSONDocument.Children.Count == 0)
            {
                yield break;
            }

            var visitor = new JSONItemCollector <JSONMember>(false);

            member.JSONDocument.Children[0].Accept(visitor);

            var definition = visitor.Items.FirstOrDefault(prop => prop.Name != null && prop.Name.Text == "\"definitions\"");

            if (definition == null || definition.Children.Count < 3)
            {
                yield break;
            }

            var block = definition.Children[2] as JSONBlockItem;

            var visitor2 = new JSONItemCollector <JSONMember>(false);

            block.Accept(visitor2);

            foreach (var prop in visitor2.Items)
            {
                string text = "#/definitions/" + prop.Name.Text.Trim('"');

                yield return(new SimpleCompletionEntry(text, StandardGlyphGroup.GlyphReference, context.Session));
            }
        }
        public IEnumerable<JSONCompletionEntry> GetListEntries(JSONCompletionContext context)
        {
            JSONMember member = context.ContextItem as JSONMember;

            if (member == null || member.Name == null)
                yield break;

            var vocabularies = VocabularyFactory.GetVocabularies(member);

            if (!vocabularies.Any())
                yield break;

            JSONBlockItem block = member.FindType<JSONBlockItem>();

            var visitor = new JSONItemCollector<JSONMember>();
            block.Accept(visitor);

            JSONMember ldType = visitor.Items.FirstOrDefault(m => m.Name != null && m.Value != null && m.Name.Text == "\"@type\"");

            if (ldType == null)
                yield break;

            string value = ldType.Value.Text.Trim('"');

            foreach (IVocabulary vocab in vocabularies.Where(v => v.Cache.ContainsKey(value)))
                foreach (Entry entry in vocab.Cache[value])
                    yield return new JSONCompletionEntry(entry.Name, "\"" + entry.Name + "\"", null,
                        entry.Glyph, "iconAutomationText", true, context.Session as ICompletionSession);
        }
        public IEnumerable<JSONCompletionEntry> GetListEntries(JSONCompletionContext context)
        {
            JSONMember req = context.ContextItem.FindType<JSONMember>();

            if (req == null || req.Name == null || req.Name.Text != "\"required\"")
                yield break;
                        
            var propVisitor = new JSONItemCollector<JSONMember>();
            req.Parent.Accept(propVisitor);

            var props = propVisitor.Items.FirstOrDefault(i => i.Name.Text == "\"properties\"");

            if (props == null)
                yield break;

            var child = props.Children[2] as JSONBlockItem;

            if (child == null)
                yield break;

            var visitor = new JSONItemCollector<JSONMember>();
            child.Accept(visitor);

            foreach (var item in visitor.Items)
            {
                yield return new SimpleCompletionEntry(item.Name.Text.Trim('"'), context.Session);
            }            
        }
        public IEnumerable<JSONCompletionEntry> GetListEntries(JSONCompletionContext context)
        {
            ITextDocument document;
            if (TextDocumentFactoryService.TryGetTextDocument(context.Snapshot.TextBuffer, out document))
            {
                string fileName = Path.GetFileName(document.FilePath).ToLowerInvariant();

                if (string.IsNullOrEmpty(fileName) || !fileName.Equals(Constants.FILENAME, StringComparison.OrdinalIgnoreCase))
                    yield break;
            }
            else
            {
                yield break;
            }

            JSONMember member = context.ContextItem.FindType<JSONMember>();

            while (member != null && member.Parent != null && member.UnquotedNameText != Constants.ELEMENT_NAME)
            {
                member = member.Parent.FindType<JSONMember>();
            }

            if (member == null || member.UnquotedNameText != Constants.ELEMENT_NAME)
                yield break;

            foreach (var task in GetTasks(context.ContextItem))
            {
                yield return new SimpleCompletionEntry(task.Item1, task.Item2, StandardGlyphGroup.GlyphGroupEvent, context.Session);
            }
        }
示例#8
0
        private List <JSONCompletionEntry> GetCompletionList(JSONMember member, JSONCompletionContext context, CompletionSet completionSet, int count)
        {
            int           start               = member.Value.Start;
            ITrackingSpan trackingSpan        = context.Snapshot.CreateTrackingSpan(start + 1 + completionSet.Start, completionSet.Length, SpanTrackingMode.EdgeExclusive);
            bool          isVersionCompletion = (completionSet.CompletionType == CompletionSortOrder.Version);

            List <JSONCompletionEntry> results = new List <JSONCompletionEntry>();

            foreach (CompletionItem item in completionSet.Completions)
            {
                string       insertionText = item.InsertionText.Replace("\\\\", "\\").Replace("\\", "\\\\");
                ImageMoniker moniker       = item.DisplayText.EndsWith("/") || item.DisplayText.EndsWith("\\") ? _folderIcon : _libraryIcon;

                if (isVersionCompletion)
                {
                    results.Add(new VersionCompletionEntry(item.DisplayText, insertionText, item.Description, moniker, trackingSpan, context.Session, ++count));
                }
                else
                {
                    results.Add(new SimpleCompletionEntry(item.DisplayText, insertionText, item.Description, moniker, trackingSpan, context.Session, ++count));
                }
            }

            return(results);
        }
示例#9
0
        public IEnumerable <JSONCompletionEntry> GetListEntries(JSONCompletionContext context)
        {
            ITextDocument document;

            if (TextDocumentFactoryService.TryGetTextDocument(context.Snapshot.TextBuffer, out document))
            {
                string fileName = Path.GetFileName(document.FilePath).ToLowerInvariant();

                if (string.IsNullOrEmpty(fileName) || !fileName.Equals(Constants.FILENAME, StringComparison.OrdinalIgnoreCase))
                {
                    yield break;
                }
            }
            else
            {
                yield break;
            }

            JSONMember member = context.ContextItem.Parent?.FindType <JSONMember>();

            if (member == null || member.UnquotedNameText != Constants.ELEMENT_NAME)
            {
                yield break;
            }

            yield return(new SimpleCompletionEntry("AfterBuild", "Fires after the MSBuild process ended.", _glyph, context.Session));

            yield return(new SimpleCompletionEntry("BeforeBuild", "Fires before the MSBuild process ended.", _glyph, context.Session));

            yield return(new SimpleCompletionEntry("Clean", "Fires after the MSBuild 'Clean' process ended.", _glyph, context.Session));

            yield return(new SimpleCompletionEntry("ProjectOpen", "Fires when the project is opened in Visual Studio.", _glyph, context.Session));
        }
        public IEnumerable<JSONCompletionEntry> GetListEntries(JSONCompletionContext context)
        {
            if (!Helper.IsSupportedFile(SupportedFileName))
                return new List<JSONCompletionEntry>();

            return GetEntries(context);
        }
        public IEnumerable<JSONCompletionEntry> GetListEntries(JSONCompletionContext context)
        {
            JSONMember member = context.ContextItem as JSONMember;

            if (member == null || member.Name == null || member.Name.Text != "\"$ref\"" || member.JSONDocument.Children.Count == 0)
                yield break;

            var visitor = new JSONItemCollector<JSONMember>(false);
            member.JSONDocument.Children[0].Accept(visitor);

            var definition = visitor.Items.FirstOrDefault(prop => prop.Name != null && prop.Name.Text == "\"definitions\"");

            if (definition == null || definition.Children.Count < 3)
                yield break;

            var block = definition.Children[2] as JSONBlockItem;

            var visitor2 = new JSONItemCollector<JSONMember>(false);
            block.Accept(visitor2);

            foreach (var prop in visitor2.Items)
            {
                string text = "#/definitions/" + prop.Name.Text.Trim('"');

                yield return new SimpleCompletionEntry(text, StandardGlyphGroup.GlyphReference, context.Session);
            }
        }
示例#12
0
        public IEnumerable <JSONCompletionEntry> GetListEntries(JSONCompletionContext context)
        {
            ITextDocument document;

            if (TextDocumentFactoryService.TryGetTextDocument(context.Snapshot.TextBuffer, out document))
            {
                string fileName = Path.GetFileName(document.FilePath).ToLowerInvariant();

                if (string.IsNullOrEmpty(fileName) || !_files.Contains(fileName))
                {
                    yield break;
                }
            }
            else
            {
                yield break;
            }

            JSONMember member = context.ContextItem as JSONMember;

            if (member == null || member.Name == null || member.UnquotedNameText != "license")
            {
                yield break;
            }

            foreach (string prop in _props)
            {
                yield return(new SimpleCompletionEntry(prop, context.Session));
            }
        }
示例#13
0
        protected override IEnumerable <JSONCompletionEntry> GetEntries(JSONCompletionContext context)
        {
            var member = context.ContextItem as JSONMember;

            if (member == null || member.UnquotedNameText != "version")
            {
                yield break;
            }

            string name = (member.Parent?.Parent as JSONMember)?.UnquotedNameText;

            if (string.IsNullOrEmpty(name))
            {
                yield break;
            }

            var versions = VSPackage.Manager.Provider.GetVersionsAsync(name).Result;

            if (versions != null)
            {
                int index = 0;

                foreach (var version in versions)
                {
                    yield return(new SimpleCompletionEntry(version, KnownMonikers.Version, context.Session, ++index));
                }
            }
        }
示例#14
0
        public IEnumerable <JSONCompletionEntry> GetListEntries(JSONCompletionContext context)
        {
            if (!Helper.IsSupportedFile(SupportedFileName))
            {
                return(new List <JSONCompletionEntry>());
            }

            return(GetEntries(context));
        }
        public IEnumerable<JSONCompletionEntry> GetListEntries(JSONCompletionContext context)
        {
            if (_dte == null)
                _dte = serviceProvider.GetService(typeof(DTE)) as DTE2;

            if (!Helper.IsSupportedFile(_dte, SupportedFileName))
                return new List<JSONCompletionEntry>();

            return GetEntries(context);
        }
示例#16
0
        public IEnumerable <JSONCompletionEntry> GetListEntries(JSONCompletionContext context)
        {
            ITextDocument document;

            if (TextDocumentFactoryService.TryGetTextDocument(context.Snapshot.TextBuffer, out document))
            {
                string fileName = Path.GetFileName(document.FilePath).ToLowerInvariant();

                if (string.IsNullOrEmpty(fileName) || (Path.GetExtension(fileName) != Constants.EXTENSION && fileName != Constants.SUGGESTIONS_FILENAME))
                {
                    yield break;
                }
            }
            else
            {
                yield break;
            }

            JSONMember member = context.ContextItem as JSONMember;

            if (member == null || member.Name == null)
            {
                yield break;
            }

            string property = member.UnquotedNameText.ToLowerInvariant();

            if (!_supported.Contains(property))
            {
                yield break;
            }

            foreach (var extension in ExtensionInstalledChecker.Instance.GetInstalledExtensions())
            {
                ImageSource glyph = GetExtensionIcon(extension);

                if (property == "productid")
                {
                    yield return(new SimpleCompletionEntry(extension.Header.Name, extension.Header.Identifier, glyph, context.Session));
                }
                else if (property == "name")
                {
                    yield return(new SimpleCompletionEntry(extension.Header.Name, Normalize(extension.Header.Name), glyph, context.Session));
                }
                else if (property == "description")
                {
                    yield return(new SimpleCompletionEntry(extension.Header.Name, Normalize(extension.Header.Description), glyph, context.Session));
                }
                else if (property == "link")
                {
                    string url = extension.Header.MoreInfoUrl?.ToString() ?? extension.Header.GettingStartedGuide?.ToString() ?? "<no link found>";
                    yield return(new SimpleCompletionEntry(extension.Header.Name, url, glyph, context.Session));
                }
            }
        }
        public IEnumerable<JSONCompletionEntry> GetListEntries(JSONCompletionContext context)
        {
            JSONMember member = context.ContextItem as JSONMember;

            if (member == null || member.Name == null || member.Name.Text != "\"$schema\"")
                yield break;

            foreach (var schema in VsJSONSchemaStore.SchemaStore.SchemaCache.Entries)
            {
                yield return new SimpleCompletionEntry(schema.OriginalPath, StandardGlyphGroup.GlyphReference, context.Session);
            }
        }
        public IEnumerable<JSONCompletionEntry> GetListEntries(JSONCompletionContext context)
        {
            JSONMember member = context.ContextItem as JSONMember;

            if (member == null || member.Name == null || !member.Name.Text.Trim('"').StartsWith("$"))
                yield break;

            foreach (string prop in _props.Keys)
            {
                yield return new SimpleCompletionEntry(prop, _props[prop], StandardGlyphGroup.GlyphReference, context.Session);
            }
        }
示例#19
0
        private FrameworkElement GetPresenter(JSONCompletionContext context)
        {
            var presenter = context?.Session?.Presenter as FrameworkElement;

            presenter?.SetBinding(ImageThemingUtilities.ImageBackgroundColorProperty, new Binding("Background")
            {
                Source    = presenter,
                Converter = new BrushToColorConverter()
            });

            return(presenter);
        }
        public IEnumerable<JSONCompletionEntry> GetListEntries(JSONCompletionContext context)
        {
            JSONMember member = context.ContextItem as JSONMember;

            if (member == null || member.Name == null || member.Name.Text != "\"$schema\"")
                yield break;

            string value = "http://json-schema.org/draft-04/schema#";

            yield return new JSONCompletionEntry(value, "\"" + value + "\"", "JSON hyper-schema draft v4",
            GlyphService.GetGlyph(StandardGlyphGroup.GlyphGroupVariable, StandardGlyphItem.GlyphItemPublic),
            "iconAutomationText", true, context.Session as ICompletionSession);
        }
        protected JSONMember GetDependency(JSONCompletionContext context)
        {
            JSONMember dependency = context.ContextItem.FindType<JSONMember>();
            JSONMember parent = dependency.Parent.FindType<JSONMember>();

            if (parent == null || !parent.UnquotedNameText.EndsWith("dependencies", StringComparison.OrdinalIgnoreCase))
                return null;

            if (dependency.UnquotedNameText.Length == 0)
                return null;

            return dependency;
        }
示例#22
0
        public IEnumerable <JSONCompletionEntry> GetListEntries(JSONCompletionContext context)
        {
            JSONMember member = context.ContextItem as JSONMember;

            if (member == null || member.Name == null || member.UnquotedNameText != "format")
            {
                yield break;
            }

            foreach (string prop in _props)
            {
                yield return(new SimpleCompletionEntry(prop, "\"" + prop + "\"", context.Session));
            }
        }
        public IEnumerable <JSONCompletionEntry> GetListEntries(JSONCompletionContext context)
        {
            JSONMember member = context.ContextItem as JSONMember;

            if (member == null || member.Name == null || !member.Name.Text.Trim('"').StartsWith("$"))
            {
                yield break;
            }

            foreach (string prop in _props.Keys)
            {
                yield return(new SimpleCompletionEntry(prop, _props[prop], StandardGlyphGroup.GlyphReference, context.Session));
            }
        }
        public IEnumerable <JSONCompletionEntry> GetListEntries(JSONCompletionContext context)
        {
            if (_dte == null)
            {
                _dte = serviceProvider.GetService(typeof(DTE)) as DTE2;
            }

            if (!Helper.IsSupportedFile(_dte, SupportedFileName))
            {
                return(new List <JSONCompletionEntry>());
            }

            return(GetEntries(context));
        }
        public IEnumerable <JSONCompletionEntry> GetListEntries(JSONCompletionContext context)
        {
            JSONMember member = context.ContextItem as JSONMember;

            if (member == null || member.Name == null || member.Name.Text != "\"$schema\"")
            {
                yield break;
            }

            foreach (var schema in VsJSONSchemaStore.SchemaStore.SchemaCache.Entries)
            {
                yield return(new SimpleCompletionEntry(schema.OriginalPath, StandardGlyphGroup.GlyphReference, context.Session));
            }
        }
示例#26
0
        public IEnumerable <JSONCompletionEntry> GetListEntries(JSONCompletionContext context)
        {
            if (DocumentService.TryGetTextDocument(context.Snapshot.TextBuffer, out ITextDocument document))
            {
                ConfigFilePath = document.FilePath;
                string fileName = Path.GetFileName(document.FilePath);

                if (fileName.Equals(Constants.ConfigFileName, StringComparison.OrdinalIgnoreCase))
                {
                    return(GetEntries(context));
                }
            }

            return(_empty);
        }
        public IEnumerable <JSONCompletionEntry> GetListEntries(JSONCompletionContext context)
        {
            JSONMember member = context.ContextItem as JSONMember;

            if (member == null || member.Name == null || member.Name.Text != "\"$schema\"")
            {
                yield break;
            }

            string value = "http://json-schema.org/draft-04/schema#";

            yield return(new JSONCompletionEntry(value, "\"" + value + "\"", "JSON hyper-schema draft v4",
                                                 GlyphService.GetGlyph(StandardGlyphGroup.GlyphGroupVariable, StandardGlyphItem.GlyphItemPublic),
                                                 "iconAutomationText", true, context.Session as ICompletionSession));
        }
        public IEnumerable<JSONCompletionEntry> GetListEntries(JSONCompletionContext context)
        {
            ITextDocument document;
            if (TextDocumentFactoryService.TryGetTextDocument(context.Snapshot.TextBuffer, out document))
            {
                string fileName = Path.GetFileName(document.FilePath).ToLowerInvariant();

                if (string.IsNullOrEmpty(fileName) || (Path.GetExtension(fileName) != Constants.EXTENSION && fileName != Constants.SUGGESTIONS_FILENAME))
                    yield break;
            }
            else
            {
                yield break;
            }

            JSONMember member = context.ContextItem as JSONMember;

            if (member == null || member.Name == null)
                yield break;

            string property = member.UnquotedNameText.ToLowerInvariant();

            if (!_supported.Contains(property))
                yield break;

            foreach (var extension in ExtensionInstalledChecker.Instance.GetInstalledExtensions())
            {
                ImageSource glyph = GetExtensionIcon(extension);

                if (property == "productid")
                {
                    yield return new SimpleCompletionEntry(extension.Header.Name, extension.Header.Identifier, glyph, context.Session);
                }
                else if (property == "name")
                {
                    yield return new SimpleCompletionEntry(extension.Header.Name, Normalize(extension.Header.Name), glyph, context.Session);
                }
                else if (property == "description")
                {
                    yield return new SimpleCompletionEntry(extension.Header.Name, Normalize(extension.Header.Description), glyph, context.Session);
                }
                else if (property == "link")
                {
                    string url = extension.Header.MoreInfoUrl?.ToString() ?? extension.Header.GettingStartedGuide?.ToString() ?? "<no link found>";
                    yield return new SimpleCompletionEntry(extension.Header.Name, url, glyph, context.Session);
                }
            }
        }
        public IEnumerable<JSONCompletionEntry> GetListEntries(JSONCompletionContext context)
        {
            JSONMember member = context.ContextItem as JSONMember;

            if (member == null || member.Name == null || member.Name.Text != "\"@context\"")
                yield break;

            var vocabularies = VocabularyFactory.GetAllVocabularies();

            foreach (IVocabulary vocabulary in vocabularies)
            {
                yield return new JSONCompletionEntry(vocabulary.DisplayName, "\"" + vocabulary.DisplayName + "\"", null,
                    GlyphService.GetGlyph(StandardGlyphGroup.GlyphGroupVariable, StandardGlyphItem.GlyphItemPublic),
                    "iconAutomationText", true, context.Session as ICompletionSession);
            }
        }
        public IEnumerable <JSONCompletionEntry> GetListEntries(JSONCompletionContext context)
        {
            JSONMember member = context.ContextItem as JSONMember;

            if (member == null || member.Name == null || !member.Name.Text.Trim('"').StartsWith("$"))
            {
                yield break;
            }

            foreach (string prop in _props.Keys)
            {
                yield return(new JSONCompletionEntry(prop, "\"" + prop + "\"", _props[prop],
                                                     GlyphService.GetGlyph(StandardGlyphGroup.GlyphReference, StandardGlyphItem.GlyphItemPublic),
                                                     "iconAutomationText", true, context.Session as ICompletionSession));
            }
        }
        public IEnumerable <JSONCompletionEntry> GetListEntries(JSONCompletionContext context)
        {
            JSONMember member = context.ContextItem as JSONMember;

            if (member == null || member.Name == null || member.Name.Text != "\"$schema\"")
            {
                yield break;
            }

            foreach (var schema in VsJSONSchemaStore.SchemaStore.SchemaCache.Entries)
            {
                yield return(new JSONCompletionEntry(schema.OriginalPath, "\"" + schema.OriginalPath + "\"", null,
                                                     GlyphService.GetGlyph(StandardGlyphGroup.GlyphReference, StandardGlyphItem.GlyphItemPublic),
                                                     "iconAutomationText", true, context.Session as ICompletionSession));
            }
        }
示例#32
0
        protected JSONMember GetDependency(JSONCompletionContext context)
        {
            JSONMember dependency = context.ContextItem.FindType <JSONMember>();
            JSONMember parent     = dependency.Parent.FindType <JSONMember>();

            if (parent == null || !parent.UnquotedNameText.EndsWith("dependencies", StringComparison.OrdinalIgnoreCase))
            {
                return(null);
            }

            if (dependency.UnquotedNameText.Length == 0)
            {
                return(null);
            }

            return(dependency);
        }
示例#33
0
        private static IEnumerable <string> GetUsedFiles(JSONCompletionContext context)
        {
            JSONArray array = context.ContextItem.FindType <JSONArray>();

            if (array == null)
            {
                yield break;
            }

            foreach (JSONArrayElement arrayElement in array.Elements)
            {
                if (arrayElement.Value is JSONTokenItem token && token.Text != context.ContextItem.Text)
                {
                    yield return(token.CanonicalizedText);
                }
            }
        }
示例#34
0
        protected override IEnumerable <JSONCompletionEntry> GetEntries(JSONCompletionContext context)
        {
            JSONMember member = context.ContextItem.FindType <JSONMember>();

            if (member == null || (member.UnquotedNameText != ManifestConstants.Destination && member.UnquotedNameText != ManifestConstants.DefaultDestination))
            {
                yield break;
            }

            JSONMember parent = member.FindType <JSONObject>()?.FindType <JSONMember>();

            if (member.UnquotedNameText == ManifestConstants.Destination && (parent == null || parent.UnquotedNameText != ManifestConstants.Libraries))
            {
                yield break;
            }

            if (member.UnquotedNameText == ManifestConstants.DefaultDestination && parent != null)
            {
                yield break;
            }

            int caretPosition = context.Session.TextView.Caret.Position.BufferPosition - member.Value.Start - 1;

            if (caretPosition > member.UnquotedValueText.Length)
            {
                yield break;
            }

            var    dependencies = Dependencies.FromConfigFile(ConfigFilePath);
            string cwd          = dependencies?.GetHostInteractions().WorkingDirectory;

            if (string.IsNullOrEmpty(cwd))
            {
                yield break;
            }

            IEnumerable <Tuple <string, string> > completions = GetCompletions(cwd, member.UnquotedValueText, caretPosition, out Span span);
            int           start        = member.Value.Start;
            ITrackingSpan trackingSpan = context.Snapshot.CreateTrackingSpan(start + 1 + span.Start, span.Length, SpanTrackingMode.EdgeInclusive);

            foreach (Tuple <string, string> item in completions)
            {
                yield return(new SimpleCompletionEntry(item.Item1, item.Item2, KnownMonikers.FolderClosed, trackingSpan, context.Session));
            }
        }
        protected override IEnumerable<JSONCompletionEntry> GetEntries(JSONCompletionContext context)
        {
            if (_version != null)
            {
                yield return new BowerVersionCompletionEntry(_version, Resources.text.CompletionVersionLatest, context.Session);
                yield return new BowerVersionCompletionEntry("~" + _version, Resources.text.CompletionVersionMinor, context.Session);
                yield return new BowerVersionCompletionEntry("^" + _version, Resources.text.CompletionVersionMajor, context.Session);

                _version = null;
            }
            else
            {
                JSONMember dependency = GetDependency(context);

                if (dependency != null)
                    ExecuteRemoteSearch(dependency);
            }
        }
        protected override IEnumerable<JSONCompletionEntry> GetEntries(JSONCompletionContext context)
        {
            if (_version != null)
            {
                yield return new NpmVersionCompletionEntry(_version, "The currently latest version of the package", context.Session, _dte);
                yield return new NpmVersionCompletionEntry("~" + _version, "Matches the most recent minor version (1.2.x)", context.Session, _dte);
                yield return new NpmVersionCompletionEntry("^" + _version, "Matches the most recent major version (1.x.x)", context.Session, _dte);

                _version = null;
            }
            else
            {
                JSONMember dependency = GetDependency(context);

                if (dependency != null)
                    ExecuteRemoteSearch(dependency);
            }
        }
        public IEnumerable<JSONCompletionEntry> GetListEntries(JSONCompletionContext context)
        {
            JSONMember member = context.ContextItem as JSONMember;

            if (member == null || member.Name == null || member.Name.Text != "\"@type\"")
                yield break;


            foreach (IVocabulary vocabulary in VocabularyFactory.GetVocabularies(member))
            {
                foreach (string key in vocabulary.Cache.Keys)
                {
                    yield return new JSONCompletionEntry(key, "\"" + key + "\"", null,
                        GlyphService.GetGlyph(StandardGlyphGroup.GlyphGroupVariable, StandardGlyphItem.GlyphItemPublic),
                        "iconAutomationText", true, context.Session as ICompletionSession);
                }
            }
        }
示例#38
0
        public IEnumerable <JSONCompletionEntry> GetListEntries(JSONCompletionContext context)
        {
            JSONMember member = context.ContextItem as JSONMember;

            if (member == null || member.Name == null || member.Name.Text != "\"@context\"")
            {
                yield break;
            }

            var vocabularies = VocabularyFactory.GetAllVocabularies();

            foreach (IVocabulary vocabulary in vocabularies)
            {
                yield return(new JSONCompletionEntry(vocabulary.DisplayName, "\"" + vocabulary.DisplayName + "\"", null,
                                                     GlyphService.GetGlyph(StandardGlyphGroup.GlyphGroupVariable, StandardGlyphItem.GlyphItemPublic),
                                                     "iconAutomationText", true, context.Session as ICompletionSession));
            }
        }
示例#39
0
        public IEnumerable<JSONCompletionEntry> GetListEntries(JSONCompletionContext context)
        {
            if (!VSPackage.Manager.Provider.IsInitialized)
                return _empty;

            ITextDocument document;

            if (TextDocumentFactoryService.TryGetTextDocument(context.Snapshot.TextBuffer, out document))
            {
                string fileName = Path.GetFileName(document.FilePath);

                if (fileName.Equals(VSPackage.ManifestFileName, StringComparison.OrdinalIgnoreCase))
                {
                    return GetEntries(context);
                }
            }

            return _empty;
        }
        protected override IEnumerable <JSONCompletionEntry> GetEntries(JSONCompletionContext context)
        {
            string parent = (context.ContextItem.Parent?.Parent as JSONMember)?.UnquotedNameText;

            if (parent != "packages")
            {
                yield break;
            }

            var names = VSPackage.Manager.Provider.GetPackageNamesAsync().Result;

            if (names != null)
            {
                foreach (var name in names)
                {
                    yield return(new SimpleCompletionEntry(name, KnownMonikers.Package, context.Session));
                }
            }
        }
        protected override IEnumerable<JSONCompletionEntry> GetEntries(JSONCompletionContext context)
        {
            if (BowerNameCompletionEntry._searchResults != null)
            {
                foreach (string value in BowerNameCompletionEntry._searchResults)
                {
                    yield return new BowerNameCompletionEntry(value, context.Session, null);
                }

                BowerNameCompletionEntry._searchResults = null;
            }
            else
            {
                JSONMember dependency = GetDependency(context);

                if (dependency != null)
                    yield return new BowerNameCompletionEntry(Resources.text.CompletionSearch, context.Session, dependency.JSONDocument);
            }
        }
        protected override IEnumerable<JSONCompletionEntry> GetEntries(JSONCompletionContext context)
        {
            if (NpmNameCompletionEntry._searchResults != null)
            {
                foreach (string value in NpmNameCompletionEntry._searchResults)
                {
                    yield return new NpmNameCompletionEntry(value, context.Session, _dte, null);
                }

                NpmNameCompletionEntry._searchResults = null;
            }
            else
            {
                JSONMember dependency = GetDependency(context);

                if (dependency != null)
                    yield return new NpmNameCompletionEntry("Search NPM...", context.Session, _dte, dependency.JSONDocument);
            }
        }
        protected override IEnumerable<JSONCompletionEntry> GetEntries(JSONCompletionContext context)
        {
            string parent = (context.ContextItem.Parent?.Parent as JSONMember)?.UnquotedNameText;

            if (parent != "packages")
                yield break;

            var names = VSPackage.Manager.Provider.GetPackageNamesAsync().Result;

            if (names != null)
            {
                Telemetry.TrackEvent("Completion for name");

                foreach (var name in names)
                {
                    yield return new SimpleCompletionEntry(name, KnownMonikers.Package, context.Session);
                }
            }
        }
示例#44
0
        public IEnumerable <JSONCompletionEntry> GetListEntries(JSONCompletionContext context)
        {
            JSONMember member = context.ContextItem as JSONMember;

            if (member == null || member.Name == null || member.Name.Text != "\"@type\"")
            {
                yield break;
            }


            foreach (IVocabulary vocabulary in VocabularyFactory.GetVocabularies(member))
            {
                foreach (string key in vocabulary.Cache.Keys)
                {
                    yield return(new JSONCompletionEntry(key, "\"" + key + "\"", null,
                                                         GlyphService.GetGlyph(StandardGlyphGroup.GlyphGroupVariable, StandardGlyphItem.GlyphItemPublic),
                                                         "iconAutomationText", true, context.Session as ICompletionSession));
                }
            }
        }
示例#45
0
        public IEnumerable <JSONCompletionEntry> GetListEntries(JSONCompletionContext context)
        {
            if (!VSPackage.Manager.Provider.IsInitialized || !context.ContextItem.JSONDocument.HasSchema(_reportCache))
            {
                return(_empty);
            }

            ITextDocument document;

            if (TextDocumentFactoryService.TryGetTextDocument(context.Snapshot.TextBuffer, out document))
            {
                string fileName = Path.GetFileName(document.FilePath);

                if (fileName.Equals(VSPackage.ManifestFileName, StringComparison.OrdinalIgnoreCase))
                {
                    return(GetEntries(context));
                }
            }

            return(_empty);
        }
示例#46
0
        protected override IEnumerable <JSONCompletionEntry> GetEntries(JSONCompletionContext context)
        {
            if (BowerNameCompletionEntry._searchResults != null)
            {
                foreach (string value in BowerNameCompletionEntry._searchResults)
                {
                    yield return(new BowerNameCompletionEntry(value, context.Session, null));
                }

                BowerNameCompletionEntry._searchResults = null;
            }
            else
            {
                JSONMember dependency = GetDependency(context);

                if (dependency != null)
                {
                    yield return(new BowerNameCompletionEntry(Resources.text.CompletionSearch, context.Session, dependency.JSONDocument));
                }
            }
        }
示例#47
0
        protected override IEnumerable <JSONCompletionEntry> GetEntries(JSONCompletionContext context)
        {
            if (NpmNameCompletionEntry._searchResults != null)
            {
                foreach (string value in NpmNameCompletionEntry._searchResults)
                {
                    yield return(new NpmNameCompletionEntry(value, context.Session, _dte, null));
                }

                NpmNameCompletionEntry._searchResults = null;
            }
            else
            {
                JSONMember dependency = GetDependency(context);

                if (dependency != null)
                {
                    yield return(new NpmNameCompletionEntry("Search NPM...", context.Session, _dte, dependency.JSONDocument));
                }
            }
        }
示例#48
0
        public IEnumerable <JSONCompletionEntry> GetListEntries(JSONCompletionContext context)
        {
            JSONMember member = context.ContextItem as JSONMember;

            if (member == null || member.Name == null)
            {
                yield break;
            }

            var vocabularies = VocabularyFactory.GetVocabularies(member);

            if (!vocabularies.Any())
            {
                yield break;
            }

            JSONBlockItem block = member.FindType <JSONBlockItem>();

            var visitor = new JSONItemCollector <JSONMember>();

            block.Accept(visitor);

            JSONMember ldType = visitor.Items.FirstOrDefault(m => m.Name != null && m.Value != null && m.Name.Text == "\"@type\"");

            if (ldType == null)
            {
                yield break;
            }

            string value = ldType.Value.Text.Trim('"');

            foreach (IVocabulary vocab in vocabularies.Where(v => v.Cache.ContainsKey(value)))
            {
                foreach (Entry entry in vocab.Cache[value])
                {
                    yield return(new JSONCompletionEntry(entry.Name, "\"" + entry.Name + "\"", null,
                                                         entry.Glyph, "iconAutomationText", true, context.Session as ICompletionSession));
                }
            }
        }
示例#49
0
        public IEnumerable <JSONCompletionEntry> GetListEntries(JSONCompletionContext context)
        {
            if (!IsBandManifest(context.ContextItem))
            {
                yield break;
            }

            JSONMember member = context.ContextItem as JSONMember;

            if (member == null || member.UnquotedNameText != "icon")
            {
                yield break;
            }

            var icons = GetIcons(member);

            if (icons.Count == 0)
            {
                yield break;
            }

            string folder = Path.GetDirectoryName(member.JSONDocument.DocumentLocation);

            Telemetry.TrackEvent("Icon completion");

            foreach (var icon in icons)
            {
                string path = Path.Combine(folder, icon.Value);

                if (File.Exists(path))
                {
                    var image = BitmapFrame.Create(new Uri(path, UriKind.Absolute));
                    yield return(new SimpleCompletionEntry(icon.Key, "\"" + icon.Key + "\"", image, context.Session));
                }
                else
                {
                    yield return(new SimpleCompletionEntry(icon.Key, "\"" + icon.Key + "\"", "\"" + icon.Value + "\"", context.Session));
                }
            }
        }
        protected override IEnumerable <JSONCompletionEntry> GetEntries(JSONCompletionContext context)
        {
            if (_version != null)
            {
                yield return(new NpmVersionCompletionEntry(_version, Resources.text.CompletionVersionLatest, context.Session));

                yield return(new NpmVersionCompletionEntry("~" + _version, Resources.text.CompletionVersionMinor, context.Session));

                yield return(new NpmVersionCompletionEntry("^" + _version, Resources.text.CompletionVersionMajor, context.Session));

                _version = null;
            }
            else
            {
                JSONMember dependency = GetDependency(context);

                if (dependency != null)
                {
                    ExecuteRemoteSearch(dependency);
                }
            }
        }
示例#51
0
        protected void UpdateListEntriesSync(JSONCompletionContext context, IEnumerable <JSONCompletionEntry> allEntries)
        {
            if (context.Session.IsDismissed)
            {
                return;
            }

            foreach (CompletionSet curCompletionSet in (context.Session as ICompletionSession)?.CompletionSets)
            {
                if (curCompletionSet is WebCompletionSet webCompletionSet)
                {
                    WebEditor.DispatchOnUIThread(() =>
                    {
                        // only delete our completion entries
                        webCompletionSet.UpdateCompletions(s => s is SimpleCompletionEntry, allEntries);
                    });

                    // The UpdateCompletions call above may modify the collection we're enumerating. That's ok, as we're done anyways.
                    break;
                }
            }
        }
示例#52
0
        protected override IEnumerable<JSONCompletionEntry> GetEntries(JSONCompletionContext context)
        {
            var member = context.ContextItem as JSONMember;

            if (member == null || member.UnquotedNameText != "version")
                yield break;

            string name = (member.Parent?.Parent as JSONMember)?.UnquotedNameText;

            if (string.IsNullOrEmpty(name))
                yield break;

            var versions = VSPackage.Manager.Provider.GetVersionsAsync(name).Result;
            if (versions != null)
            {
                Telemetry.TrackEvent("Completion for version");

                foreach (var version in versions.Reverse())
                {
                    yield return new SimpleCompletionEntry(version, KnownMonikers.Version, context.Session);
                }
            }
        }
        public IEnumerable<JSONCompletionEntry> GetListEntries(JSONCompletionContext context)
        {
            ITextDocument document;
            if (TextDocumentFactoryService.TryGetTextDocument(context.Snapshot.TextBuffer, out document))
            {
                string fileName = Path.GetFileName(document.FilePath).ToLowerInvariant();

                if (string.IsNullOrEmpty(fileName) || !_files.Contains(fileName))
                    yield break;
            }
            else {
                yield break;
            }

            JSONMember member = context.ContextItem as JSONMember;

            if (member == null || member.Name == null || member.UnquotedNameText != "license")
                yield break;

            foreach (string prop in _props)
            {
                yield return new SimpleCompletionEntry(prop, context.Session);
            }
        }
        protected override IEnumerable<JSONCompletionEntry> GetEntries(JSONCompletionContext context)
        {
            var member = context.ContextItem.FindType<JSONMember>();
            var list = new List<JSONCompletionEntry>();

            if (member == null || member.UnquotedNameText != "files")
                return list;

            var parent = member.Parent as JSONObject;
            var name = parent?.FindType<JSONMember>()?.UnquotedNameText;

            if (string.IsNullOrEmpty(name))
                return list;

            var children = parent.BlockItemChildren?.OfType<JSONMember>();
            var version = children?.SingleOrDefault(c => c.UnquotedNameText == "version");

            if (version == null)
                return list;

            var package = VSPackage.Manager.Provider.GetInstallablePackageAsync(name, version.UnquotedValueText).Result;

            if (package == null)
                return list;

            Telemetry.TrackEvent("Completion for files");

            JSONArray array = context.ContextItem.FindType<JSONArray>();

            if (array == null)
                return list;

            HashSet<string> usedFiles = new HashSet<string>(StringComparer.OrdinalIgnoreCase);

            foreach (JSONArrayElement arrayElement in array.Elements)
            {
                JSONTokenItem token = arrayElement.Value as JSONTokenItem;

                if (token != null)
                {
                    usedFiles.Add(token.CanonicalizedText);
                }
            }

            FrameworkElement o = context.Session.Presenter as FrameworkElement;

            if (o != null)
            {
                o.SetBinding(ImageThemingUtilities.ImageBackgroundColorProperty, new Binding("Background")
                {
                    Source = o,
                    Converter = new BrushToColorConverter()
                });
            }

            foreach (var file in package.AllFiles)
            {
                if (!usedFiles.Contains(file))
                {
                    bool isThemeIcon;
                    ImageSource glyph = WpfUtil.GetIconForFile(o, file, out isThemeIcon);

                    list.Add(new SimpleCompletionEntry(file, glyph, context.Session));
                }
            }

            if (o != null)
            {
                BindingOperations.ClearBinding(o, ImageThemingUtilities.ImageBackgroundColorProperty);
            }

            return list;
        }
示例#55
0
 protected abstract IEnumerable<JSONCompletionEntry> GetEntries(JSONCompletionContext context);