예제 #1
0
        private void HandleParseComplete(object sender, ParseResultEventArgs e)
        {
            _margin.VisualElement.Dispatcher.BeginInvoke((Action)(() =>
            {
                //todo do not clear if it the same collection returned

                if (DiffViewModels.Any(dvm => dvm.ShowPopup))
                {
                    return;
                }

                DiffViewModels.Clear();

                var diffResult = e as DiffParseResultEventArgs;
                if (diffResult == null)
                {
                    return;
                }

                foreach (var diffViewModel in diffResult.Diff.Select(hunkRangeInfo => new DiffViewModel(_margin, hunkRangeInfo, _textView, _gitCommands)))
                {
                    DiffViewModels.Add(diffViewModel);
                }
            }));
        }
        private void HandleParseComplete(object sender, ParseResultEventArgs e)
        {
            _margin.VisualElement.Dispatcher.BeginInvoke((Action)(() =>
            {
                try
                {
                    List <DiffViewModel> diffViewModels = new List <DiffViewModel>();
                    DiffParseResultEventArgs diffResult = e as DiffParseResultEventArgs;
                    if (diffResult != null)
                    {
                        foreach (HunkRangeInfo hunkRangeInfo in diffResult.Diff)
                        {
                            diffViewModels.Add(new DiffViewModel(_margin, hunkRangeInfo, _textView));
                        }
                    }

                    DiffViewModels = diffViewModels;
                }
                catch (Exception ex)
                {
                    if (ErrorHandler.IsCriticalException(ex))
                    {
                        throw;
                    }
                }
            }));
        }
 private void HandleBackgroundParseComplete(object sender, ParseResultEventArgs e)
 {
     if (e.Errors.Count == 0)
     {
         this._dirty    = true;
         this._lastEdit = DateTimeOffset.Now;
     }
 }
예제 #4
0
        private void HandleBackgroundParseComplete(object sender, ParseResultEventArgs e)
        {
            AntlrParseResultEventArgs antlrParseResultArgs = e as AntlrParseResultEventArgs;

            if (antlrParseResultArgs == null)
            {
                return;
            }

            UpdateNavigationTargets(antlrParseResultArgs);
        }
        private bool TryHandleParseCompleteV3(object sender, ParseResultEventArgs e)
        {
            if (!object.ReferenceEquals(sender, BackgroundParser))
            {
                return(false);
            }

            AntlrParseResultEventArgs antlrArgs = e as AntlrParseResultEventArgs;

            if (antlrArgs == null)
            {
                this.Tokens3 = null;
                return(false);
            }

            var result = antlrArgs.Result;

            this.Snapshot = e.Snapshot;
            this.Tokens3  = antlrArgs.Tokens;

            Tree.Dispatcher.Invoke(
                (Action)(() =>
            {
                try
                {
                    this.Tree.Items.Clear();
                    IAstRuleReturnScope resultArgs = result as IAstRuleReturnScope;
                    ITree tree = resultArgs != null ? resultArgs.Tree as ITree : null;
                    if (tree != null)
                    {
                        if (!tree.IsNil)
                        {
                            this.Tree.Items.Add(resultArgs.Tree);
                        }
                        else if (tree.ChildCount > 0)
                        {
                            for (int i = 0; i < tree.ChildCount; i++)
                            {
                                this.Tree.Items.Add(tree.GetChild(i));
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    if (ErrorHandler.IsCriticalException(ex))
                    {
                        throw;
                    }
                }
            }));

            return(true);
        }
예제 #6
0
        protected virtual void HandleBackgroundParseComplete(object sender, ParseResultEventArgs e)
        {
            List <ITagSpan <ScopeAnchorTag> > anchors       = new List <ITagSpan <ScopeAnchorTag> >();
            JavaParseResultEventArgs          javaEventArgs = e as JavaParseResultEventArgs;

            if (javaEventArgs != null && javaEventArgs.Errors.Count == 0)
            {
                foreach (var type in javaEventArgs.Types)
                {
                    CommonTree tagTree = null;
                    switch (type.Type)
                    {
                    case Java2Parser.CLASS_TYPE_IDENTIFIER:
                        tagTree = (CommonTree)type.GetFirstChildWithType(Java2Parser.CLASS);
                        break;

                    case Java2Parser.ENUM_TYPE_IDENTIFIER:
                        tagTree = (CommonTree)type.GetFirstChildWithType(Java2Parser.ENUM);
                        break;

                    case Java2Parser.ANNOTATION_TYPE_IDENTIFIER:
                    case Java2Parser.INTERFACE_TYPE_IDENTIFIER:
                        tagTree = (CommonTree)type.GetFirstChildWithType(Java2Parser.INTERFACE);
                        break;

                    default:
                        continue;
                    }

                    IToken       tagToken = tagTree.Token;
                    SnapshotSpan span     = new SnapshotSpan(e.Snapshot, Span.FromBounds(tagToken.StartIndex, tagToken.StopIndex + 1));

                    string         name  = type.Text;
                    int            id    = 0;
                    int            order = 0;
                    ScopeAnchorTag tag   = new ScopeAnchorTag(name, id, type.Type, order);

                    anchors.Add(new TagSpan <ScopeAnchorTag>(span, tag));

                    // TODO: add } anchors as well
                }
            }

            // TODO: Force reclassification of lines changed since this background parse started

            _anchors.Clear();
            _anchors.AddRange(anchors);
        }
예제 #7
0
        private void HandleBackgroundParserParseComplete(object sender, ParseResultEventArgs e)
        {
            var snapshot = TextBuffer.CurrentSnapshot;
            List <TagSpan <IErrorTag> > tags = new List <TagSpan <IErrorTag> >();

            foreach (var error in e.Errors)
            {
                try
                {
                    tags.Add(new TagSpan <IErrorTag>(new SnapshotSpan(e.Snapshot, error.Span).TranslateTo(snapshot, SpanTrackingMode.EdgeExclusive), new ErrorTag(PredefinedErrorTypeNames.SyntaxError, error.Message)));
                }
                catch (Exception ex) when(!ErrorHandler.IsCriticalException(ex))
                {
                }
            }
            _tags = tags.ToArray();
            OnTagsChanged(new SnapshotSpanEventArgs(new SnapshotSpan(snapshot, 0, snapshot.Length)));
        }
예제 #8
0
        private void HandleBackgroundParseComplete(object sender, ParseResultEventArgs e)
        {
            AntlrParseResultEventArgs antlrParseResultArgs          = e as AntlrParseResultEventArgs;
            List <ITagSpan <IOutliningRegionTag> > outliningRegions = new List <ITagSpan <IOutliningRegionTag> >();

            if (antlrParseResultArgs != null)
            {
                IAstRuleReturnScope resultArgs = antlrParseResultArgs.Result as IAstRuleReturnScope;
                CommonTree          result     = resultArgs != null ? resultArgs.Tree as CommonTree : null;
                if (result != null && result.Children != null)
                {
                    foreach (CommonTree child in result.Children)
                    {
                        if (child == null || string.IsNullOrEmpty(child.Text))
                        {
                            continue;
                        }

                        switch (child.Type)
                        {
                        case GoLexer.KW_IMPORT:
                        case GoLexer.KW_TYPE:
                        case GoLexer.KW_CONST:
                        case GoLexer.KW_FUNC:
                            var                           startToken   = antlrParseResultArgs.Tokens[child.TokenStartIndex];
                            var                           stopToken    = antlrParseResultArgs.Tokens[child.TokenStopIndex];
                            Span                          span         = new Span(startToken.StartIndex, stopToken.StopIndex - startToken.StartIndex + 1);
                            SnapshotSpan                  snapshotSpan = new SnapshotSpan(e.Snapshot, span);
                            IOutliningRegionTag           tag          = new OutliningRegionTag();
                            TagSpan <IOutliningRegionTag> tagSpan      = new TagSpan <IOutliningRegionTag>(snapshotSpan, tag);
                            outliningRegions.Add(tagSpan);
                            break;

                        default:
                            continue;
                        }
                    }
                }
            }

            this._outliningRegions = outliningRegions;
            OnTagsChanged(new SnapshotSpanEventArgs(new SnapshotSpan(e.Snapshot, new Span(0, e.Snapshot.Length))));
        }
예제 #9
0
        private void HandleBackgroundParseComplete(object sender, ParseResultEventArgs e)
        {
            if (!object.ReferenceEquals(sender, BackgroundParser))
            {
                return;
            }

            MarkdownParseResultEventArgs markdownArgs = e as MarkdownParseResultEventArgs;

            if (e == null)
            {
                return;
            }

            var html = markdownArgs.HtmlText;

            BrowserDispatch(SaveScrollTop);
            NavigateToString(html);
        }
        private void HandleParseComplete(object sender, ParseResultEventArgs e)
        {
            _margin.VisualElement.Dispatcher.BeginInvoke((Action) (() =>
                                                                       {
                                                                           //todo do not clear if it the same collection returned

                                                                           if (DiffViewModels.Any(dvm => dvm.ShowPopup)) return;

                                                                           DiffViewModels.Clear();

                                                                           var diffResult = e as DiffParseResultEventArgs;
                                                                           if (diffResult == null) return;

                                                                           foreach (var diffViewModel in diffResult.Diff.Select(hunkRangeInfo => new DiffViewModel(_margin, hunkRangeInfo, _textView, _gitCommands)))
                                                                           {
                                                                               DiffViewModels.Add(diffViewModel);
                                                                           }
                                                                       }));
        }
예제 #11
0
        private void HandleBackgroundParseComplete(object sender, ParseResultEventArgs e)
        {
            List <ITagSpan <IOutliningRegionTag> > outliningRegions = new List <ITagSpan <IOutliningRegionTag> >();
            AntlrParseResultEventArgs antlrParseResultArgs          = e as AntlrParseResultEventArgs;

            if (antlrParseResultArgs != null)
            {
                var result = antlrParseResultArgs.Result as StringTemplateBackgroundParser.TemplateGroupRuleReturnScope;
                if (result != null)
                {
                    foreach (var templateInfo in result.Group.GetTemplateInformation())
                    {
                        var template = templateInfo.Template;

                        if (template.IsAnonSubtemplate)
                        {
                            continue;
                        }

                        if (template.IsRegion && template.RegionDefType != Antlr4.StringTemplate.Template.RegionType.Explicit)
                        {
                            continue;
                        }

                        Interval     sourceInterval = templateInfo.GroupInterval;
                        SnapshotSpan span           = new SnapshotSpan(e.Snapshot, new Span(sourceInterval.Start, sourceInterval.Length));
                        if (e.Snapshot.GetLineNumberFromPosition(span.Start) == e.Snapshot.GetLineNumberFromPosition(span.End))
                        {
                            continue;
                        }

                        IOutliningRegionTag tag = new OutliningRegionTag();
                        outliningRegions.Add(new TagSpan <IOutliningRegionTag>(span, tag));
                    }
                }
            }

            this._outliningRegions = outliningRegions;
            OnTagsChanged(new SnapshotSpanEventArgs(new SnapshotSpan(e.Snapshot, new Span(0, e.Snapshot.Length))));
        }
예제 #12
0
        private void HandleBackgroundParseComplete(object sender, ParseResultEventArgs e)
        {
            AntlrParseResultEventArgs      antlrParseResultArgs = e as AntlrParseResultEventArgs;
            List <IEditorNavigationTarget> navigationTargets    = new List <IEditorNavigationTarget>();

            if (antlrParseResultArgs != null)
            {
                //// add the Global Scope type
                //{
                //    var name = "Global Scope";
                //    var navigationType = EditorNavigationTypeRegistryService.GetEditorNavigationType(PredefinedEditorNavigationTypes.Types);
                //    var span = new SnapshotSpan(e.Snapshot, new Span(0, e.Snapshot.Length));
                //    var seek = new SnapshotSpan(e.Snapshot, new Span(0, 0));
                //    var glyph = GetGlyph(StandardGlyphGroup.GlyphGroupNamespace, StandardGlyphItem.GlyphItemPublic);
                //    var target = new EditorNavigationTarget(name, navigationType, span, seek, glyph);
                //    navigationTargets.Add(target);
                //}

                IAstRuleReturnScope resultArgs = antlrParseResultArgs.Result as IAstRuleReturnScope;
                var    result      = resultArgs != null ? resultArgs.Tree as CommonTree : null;
                string packageName = string.Empty;

                if (result != null && result.Children != null)
                {
                    foreach (CommonTree child in result.Children)
                    {
                        if (child == null || string.IsNullOrEmpty(child.Text))
                        {
                            continue;
                        }

                        switch (child.Type)
                        {
                        case GoLexer.KW_PACKAGE:
                        {
                            packageName = ((CommonTree)child.Children[0]).Token.Text;
                            if (string.IsNullOrWhiteSpace(packageName))
                            {
                                continue;
                            }

                            var navigationType = EditorNavigationTypeRegistryService.GetEditorNavigationType(PredefinedEditorNavigationTypes.Types);
                            var startToken     = antlrParseResultArgs.Tokens[child.TokenStartIndex];
                            var stopToken      = antlrParseResultArgs.Tokens[child.TokenStopIndex];
                            //Span span = new Span(startToken.StartIndex, stopToken.StopIndex - startToken.StartIndex + 1);
                            //SnapshotSpan ruleSpan = new SnapshotSpan(e.Snapshot, span);
                            // applies to the whole file
                            var          span     = new SnapshotSpan(e.Snapshot, new Span(0, e.Snapshot.Length));
                            SnapshotSpan ruleSeek = new SnapshotSpan(e.Snapshot, new Span(((CommonTree)child.Children[0]).Token.StartIndex, 0));
                            var          glyph    = _provider.GlyphService.GetGlyph(StandardGlyphGroup.GlyphGroupModule, StandardGlyphItem.GlyphItemPublic);
                            navigationTargets.Add(new EditorNavigationTarget(packageName, navigationType, span, ruleSeek, glyph));
                        }
                        break;

                        case GoLexer.KW_TYPE:
                            // each child tree is a typeSpec, the root of which is an identifier that names the type
                            foreach (CommonTree typeSpec in child.Children)
                            {
                                var typeName = typeSpec.Token.Text;
                                if (string.IsNullOrWhiteSpace(typeName))
                                {
                                    continue;
                                }

                                for (ITree parent = typeSpec.Parent; parent != null; parent = parent.Parent)
                                {
                                    if (parent.Type == GoParser.TYPE_IDENTIFIER)
                                    {
                                        typeName = parent.Text + "." + typeName;
                                    }
                                }

                                if (!string.IsNullOrWhiteSpace(packageName))
                                {
                                    typeName = packageName + "." + typeName;
                                }

                                var          navigationType = EditorNavigationTypeRegistryService.GetEditorNavigationType(PredefinedEditorNavigationTypes.Types);
                                var          startToken     = antlrParseResultArgs.Tokens[typeSpec.TokenStartIndex];
                                var          stopToken      = antlrParseResultArgs.Tokens[typeSpec.TokenStopIndex];
                                Span         span           = new Span(startToken.StartIndex, stopToken.StopIndex - startToken.StartIndex + 1);
                                SnapshotSpan ruleSpan       = new SnapshotSpan(e.Snapshot, span);
                                SnapshotSpan ruleSeek       = new SnapshotSpan(e.Snapshot, new Span(typeSpec.Token.StartIndex, 0));
                                var          glyph          = _provider.GlyphService.GetGlyph(GetGlyphGroupForType(typeSpec), char.IsUpper(typeName[0]) ? StandardGlyphItem.GlyphItemPublic : StandardGlyphItem.GlyphItemPrivate);
                                navigationTargets.Add(new EditorNavigationTarget(typeName, navigationType, ruleSpan, ruleSeek, glyph));

                                if (typeSpec.ChildCount > 0 && typeSpec.Children[0].Type == GoLexer.KW_STRUCT && typeSpec.Children[0].ChildCount > 0)
                                {
                                    foreach (CommonTree fieldSpec in ((CommonTree)typeSpec.Children[0]).Children)
                                    {
                                        if (fieldSpec.Type != GoParser.FIELD_DECLARATION)
                                        {
                                            continue;
                                        }

                                        foreach (CommonTree fieldNameIdentifier in ((CommonTree)fieldSpec.GetFirstChildWithType(GoParser.AST_VARS)).Children)
                                        {
                                            string fieldName = fieldNameIdentifier.Text;
                                            navigationType = EditorNavigationTypeRegistryService.GetEditorNavigationType(PredefinedEditorNavigationTypes.Members);
                                            startToken     = antlrParseResultArgs.Tokens[fieldNameIdentifier.TokenStartIndex];
                                            stopToken      = antlrParseResultArgs.Tokens[fieldSpec.TokenStopIndex];
                                            span           = new Span(startToken.StartIndex, stopToken.StopIndex - startToken.StartIndex + 1);
                                            ruleSpan       = new SnapshotSpan(e.Snapshot, span);
                                            ruleSeek       = new SnapshotSpan(e.Snapshot, new Span(fieldNameIdentifier.Token.StartIndex, 0));
                                            glyph          = _provider.GlyphService.GetGlyph(StandardGlyphGroup.GlyphGroupField, char.IsUpper(fieldName[0]) ? StandardGlyphItem.GlyphItemPublic : StandardGlyphItem.GlyphItemPrivate);
                                            navigationTargets.Add(new EditorNavigationTarget(fieldName, navigationType, ruleSpan, ruleSeek, glyph));
                                        }
                                    }
                                }
                            }

                            break;

                        case GoLexer.KW_CONST:
                        case GoLexer.KW_VAR:
                            foreach (CommonTree spec in child.Children)
                            {
                                CommonTree decl = (CommonTree)spec.Children[0];
                                foreach (CommonTree nameToken in decl.Children)
                                {
                                    var name = nameToken.Token.Text;
                                    if (string.IsNullOrWhiteSpace(name))
                                    {
                                        continue;
                                    }

                                    var          navigationType = EditorNavigationTypeRegistryService.GetEditorNavigationType(PredefinedEditorNavigationTypes.Members);
                                    var          startToken     = antlrParseResultArgs.Tokens[nameToken.TokenStartIndex];
                                    var          stopToken      = antlrParseResultArgs.Tokens[nameToken.TokenStopIndex];
                                    Span         span           = new Span(startToken.StartIndex, stopToken.StopIndex - startToken.StartIndex + 1);
                                    SnapshotSpan ruleSpan       = new SnapshotSpan(e.Snapshot, span);
                                    SnapshotSpan ruleSeek       = new SnapshotSpan(e.Snapshot, new Span(nameToken.Token.StartIndex, 0));
                                    var          group          = (child.Type == GoLexer.KW_CONST) ? StandardGlyphGroup.GlyphGroupConstant : StandardGlyphGroup.GlyphGroupVariable;
                                    var          item           = char.IsUpper(name[0]) ? StandardGlyphItem.GlyphItemPublic : StandardGlyphItem.GlyphItemPrivate;
                                    var          glyph          = _provider.GlyphService.GetGlyph(group, item);
                                    navigationTargets.Add(new EditorNavigationTarget(name, navigationType, ruleSpan, ruleSeek, glyph));
                                }
                            }
                            break;

                        case GoLexer.KW_FUNC:
                        {
                            // the first child is either a receiver (method) or an identifier with the name of the function
                            var token = ((CommonTree)child.Children[0]).Token;
                            if (token.Type == GoLexer.METHOD_RECEIVER)
                            {
                                token = ((CommonTree)child.Children[1]).Token;
                            }

                            var functionName = token.Text;
                            if (string.IsNullOrWhiteSpace(functionName))
                            {
                                continue;
                            }

                            ITree receiver = child.GetFirstChildWithType(GoParser.METHOD_RECEIVER);
                            if (receiver != null)
                            {
                                string receiverName;
                                if (receiver.ChildCount >= 2)
                                {
                                    receiverName = receiver.GetChild(receiver.ChildCount - 2).Text;
                                }
                                else
                                {
                                    receiverName = "?";
                                }

                                functionName = receiverName + "." + functionName;
                            }

                            IEnumerable <string> args   = ProcessFunctionParameters(child);
                            string       sig            = string.Format("{0}({1})", functionName, string.Join(", ", args));
                            var          navigationType = EditorNavigationTypeRegistryService.GetEditorNavigationType(PredefinedEditorNavigationTypes.Members);
                            var          startToken     = antlrParseResultArgs.Tokens[child.TokenStartIndex];
                            var          stopToken      = antlrParseResultArgs.Tokens[child.TokenStopIndex];
                            Span         span           = new Span(startToken.StartIndex, stopToken.StopIndex - startToken.StartIndex + 1);
                            SnapshotSpan ruleSpan       = new SnapshotSpan(e.Snapshot, span);
                            SnapshotSpan ruleSeek       = new SnapshotSpan(e.Snapshot, new Span(child.Token.StartIndex, 0));
                            var          glyph          = _provider.GlyphService.GetGlyph(StandardGlyphGroup.GlyphGroupMethod, char.IsUpper(functionName[0]) ? StandardGlyphItem.GlyphItemPublic : StandardGlyphItem.GlyphItemPrivate);
                            navigationTargets.Add(new EditorNavigationTarget(sig, navigationType, ruleSpan, ruleSeek, glyph));
                        }

                        break;

                        default:
                            continue;
                        }
                    }
                }
            }

            this._navigationTargets = navigationTargets;
            OnNavigationTargetsChanged(EventArgs.Empty);
        }
        private void HandleParseComplete(object sender, ParseResultEventArgs e)
        {
            _margin.VisualElement.Dispatcher.BeginInvoke((Action)(() =>
            {
                try
                {
                    List<DiffViewModel> diffViewModels = new List<DiffViewModel>();
                    DiffParseResultEventArgs diffResult = e as DiffParseResultEventArgs;
                    if (diffResult != null)
                    {
                        foreach (HunkRangeInfo hunkRangeInfo in diffResult.Diff)
                            diffViewModels.Add(new DiffViewModel(_margin, hunkRangeInfo, _textView));
                    }

                    DiffViewModels = diffViewModels;
                }
                catch (Exception ex)
                {
                    if (ErrorHandler.IsCriticalException(ex))
                        throw;
                }
            }));
        }
예제 #14
0
 protected override void OnParseComplete(ParseResultEventArgs e)
 {
     PreviousParseResult = e as AntlrParseResultEventArgs;
     ExtractRuleSpans();
     base.OnParseComplete(e);
 }
예제 #15
0
 private void HandleParseComplete(object sender, ParseResultEventArgs e)
 {
     TryHandleParseCompleteV3(sender, e);
     TryHandleParseCompleteV4(sender, e);
 }
예제 #16
0
        private void HandleBackgroundParseComplete(object sender, ParseResultEventArgs e)
        {
            List <IEditorNavigationTarget> navigationTargets    = new List <IEditorNavigationTarget>();
            AntlrParseResultEventArgs      antlrParseResultArgs = e as AntlrParseResultEventArgs;

            if (antlrParseResultArgs != null)
            {
                var result = antlrParseResultArgs.Result as StringTemplateBackgroundParser.TemplateGroupRuleReturnScope;
                if (result != null)
                {
                    foreach (var templateInfo in result.Group.GetTemplateInformation())
                    {
                        Antlr4.StringTemplate.Compiler.CompiledTemplate template = templateInfo.Template;

                        if (template.IsAnonSubtemplate)
                        {
                            continue;
                        }

                        bool isRegion = !string.IsNullOrEmpty(templateInfo.EnclosingTemplateName);
                        if (isRegion)
                        {
                            string sig = string.Format("{0}.{1}()", templateInfo.EnclosingTemplateName, templateInfo.NameToken.Text);
                            //string sig = string.Format("{0}({1})", name, string.Join(", ", args));
                            IEditorNavigationType navigationType = EditorNavigationTypeRegistryService.GetEditorNavigationType(StringTemplateEditorNavigationTypes.Templates);
                            Interval              sourceInterval = templateInfo.GroupInterval;
                            SnapshotSpan          span           = new SnapshotSpan(e.Snapshot, new Span(sourceInterval.Start, sourceInterval.Length));
                            SnapshotSpan          seek           = new SnapshotSpan(e.Snapshot, new Span(sourceInterval.Start, 0));
                            ImageSource           glyph          = _provider.GlyphService.GetGlyph(StandardGlyphGroup.GlyphGroupNamespace, StandardGlyphItem.GlyphItemPublic);
                            NavigationTargetStyle style          = NavigationTargetStyle.None;
                            navigationTargets.Add(new EditorNavigationTarget(sig, navigationType, span, seek, glyph, style));
                        }
                        else
                        {
                            // always pull the name from the templateInfo because the template itself could be an aliased template
                            string name = templateInfo.NameToken.Text;
                            IEnumerable <string> args = template.FormalArguments != null?template.FormalArguments.Select(i => i.Name) : Enumerable.Empty <string>();

                            string sig = string.Format("{0}({1})", name, string.Join(", ", args));
                            IEditorNavigationType navigationType = EditorNavigationTypeRegistryService.GetEditorNavigationType(StringTemplateEditorNavigationTypes.Templates);
                            Interval              sourceInterval = templateInfo.GroupInterval;
                            SnapshotSpan          span           = new SnapshotSpan(e.Snapshot, new Span(sourceInterval.Start, sourceInterval.Length));
                            SnapshotSpan          seek           = new SnapshotSpan(e.Snapshot, new Span(sourceInterval.Start, 0));
                            bool                  isAlias        = false;
                            StandardGlyphGroup    glyphGroup     = isAlias ? StandardGlyphGroup.GlyphGroupTypedef : StandardGlyphGroup.GlyphGroupTemplate;
                            ImageSource           glyph          = _provider.GlyphService.GetGlyph(StandardGlyphGroup.GlyphGroupTemplate, StandardGlyphItem.GlyphItemPublic);
                            NavigationTargetStyle style          = NavigationTargetStyle.None;
                            navigationTargets.Add(new EditorNavigationTarget(sig, navigationType, span, seek, glyph, style));
                        }
                    }

                    //foreach (var dictionaryInfo in result.Group.GetDictionaryInformation())
                    //{
                    //    string name = dictionaryInfo.Name;
                    //    IEditorNavigationType navigationType = EditorNavigationTypeRegistryService.GetEditorNavigationType(PredefinedEditorNavigationTypes.Members);
                    //    Interval sourceInterval = dictionaryInfo.GroupInterval;
                    //    SnapshotSpan span = new SnapshotSpan(e.Snapshot, new Span(sourceInterval.Start, sourceInterval.Length));
                    //    SnapshotSpan seek = new SnapshotSpan(e.Snapshot, new Span(sourceInterval.Start, 0));
                    //    ImageSource glyph = _provider.GetGlyph(StandardGlyphGroup.GlyphGroupModule, StandardGlyphItem.GlyphItemPublic);
                    //    NavigationTargetStyle style = NavigationTargetStyle.None;
                    //    navigationTargets.Add(new EditorNavigationTarget(sig, navigationType, span, seek, glyph, style));
                    //}
                }
            }

            this._navigationTargets = navigationTargets;
            OnNavigationTargetsChanged(EventArgs.Empty);
        }