Read() 공개 정적인 메소드

public static Read ( string text ) : XmlParseInfo
text string
리턴 XmlParseInfo
예제 #1
0
        public Task <CompletionContext> GetCompletionContextAsync(IAsyncCompletionSession session, CompletionTrigger trigger, SnapshotPoint triggerLocation, SnapshotSpan applicableToSpan, CancellationToken token)
        {
            //session.Properties["LineNumber"] = triggerLocation.GetContainingLine().LineNumber;
            var point = applicableToSpan.Start;
            var text  = textView.TextBuffer.CurrentSnapshot.GetText(0, point.Position);

            return(Task.Run(() =>
            {
                try
                {
                    // read XML up to the cursor
                    var info = XmlParser.Read(text);
                    if (info.Mode == CompletionMode.Class)
                    {
                        var prevPoint = point - 1;
                        var prevCh = prevPoint.GetChar();
                        if (prevCh != '<' && prevCh != '.')
                        {
                            return CompletionContext.Empty;
                        }
                    }

                    var nodes = info.Nodes;
                    var ns = nodes.SelectMany(r => r.Namespaces ?? Enumerable.Empty <CompletionNamespace>());
                    var path = nodes.Where(r => r.Mode == CompletionMode.Class).Select(r => r.Name).ToList();
                    var last = nodes.LastOrDefault();

                    // get available completion items
                    var items = Designer.Completion.Completion.GetCompletionItems(ns, info.Mode, path, last);

                    // translate to VS completions
                    var completionList = new List <mvli.AsyncCompletion.Data.CompletionItem>();
                    foreach (var cls in items.OrderBy(r => r.Name))
                    {
                        var displayText = cls.Name;
                        var item = new mvli.AsyncCompletion.Data.CompletionItem(displayText,
                                                                                source: this,
                                                                                filters: ImmutableArray <CompletionFilter> .Empty,
                                                                                icon: GetGlyph(cls.Type),
                                                                                suffix: cls.Suffix ?? string.Empty,
                                                                                attributeIcons: ImmutableArray <ImageElement> .Empty,
                                                                                insertText: displayText, sortText: displayText, filterText: displayText
                                                                                );
                        item.Properties["eto"] = cls;
                        completionList.Add(item);
                    }

                    return new CompletionContext(completionList.ToImmutableArray(), null, InitialSelectionHint.RegularSelection);
                }
                catch (Exception ex)
                {
                    Debug.WriteLine($"Error doing autocomplete: {ex}");
                    throw;
                }
            }));
        }
예제 #2
0
        public void AugmentCompletionSession(ICompletionSession session, IList <CompletionSet> completionSets)
        {
            try
            {
                // read XML up to the cursor
                var point = session.TextView.Caret.Position.BufferPosition;
                var info  = XmlParser.Read(buffer.CurrentSnapshot.GetText(0, point.Position));
                if (info.Mode == CompletionMode.Class)
                {
                    var prevPoint = point - 1;
                    var prevCh    = prevPoint.GetChar();
                    if (prevCh != '<' && prevCh != '.')
                    {
                        session.Dismiss();
                        return;
                    }
                }
                var nodes = info.Nodes;
                var ns    = nodes.SelectMany(r => r.Namespaces ?? Enumerable.Empty <CompletionNamespace>());
                var path  = nodes.Where(r => r.Mode == CompletionMode.Class).Select(r => r.Name).ToList();
                var last  = nodes.LastOrDefault();

                // get available completion items
                var items = Designer.Completion.Completion.GetCompletionItems(ns, info.Mode, path, last);

                // translate to VS completions
                var completionList = new List <mvli.Completion>();
                foreach (var cls in items.OrderBy(r => r.Name))
                {
                    completionList.Add(new mvli.Completion(cls.Name, cls.Name, cls.Description, GetGlyph(cls.Type), null));
                }

                completionSets.Insert(0, new CompletionSet(
                                          "eto",
                                          "Eto",
                                          FindTokenSpanAtPosition(session.GetTriggerPoint(buffer), session, info.Mode),
                                          completionList,
                                          null));
                return;
            }
            catch (Exception ex)
            {
                Debug.WriteLine($"Error doing autocomplete: {ex}");
                throw;
            }
        }