internal SyntaxTransporter(CommonSyntaxTrivia trivia)
        {
            try
            {
                var t = (CSharp.SyntaxTrivia)trivia;
                SourceLanguage = LanguageNames.CSharp;
            }
            catch
            {
                var t = (VisualBasic.SyntaxTrivia)trivia;
                SourceLanguage = LanguageNames.VisualBasic;
            }

            SyntaxStream = new MemoryStream();
            var rootNode = GetRootNode(trivia);

            if (rootNode != null)
            {
                if (SourceLanguage == LanguageNames.CSharp)
                {
                    var csharpRootNode = (CSharp.SyntaxNode)rootNode;
                    csharpRootNode.SerializeTo(SyntaxStream);
                }
                else
                {
                    var vbRootNode = (VisualBasic.SyntaxNode)rootNode;
                    vbRootNode.SerializeTo(SyntaxStream);
                }
            }

            ItemSpan     = trivia.Span;
            ItemKind     = trivia.GetKind(SourceLanguage);
            ItemCategory = SyntaxCategory.SyntaxTrivia;
        }
        public static string GetKind(this CommonSyntaxTrivia trivia, string language)
        {
            var kind = string.Empty;

            if (language == LanguageNames.CSharp)
            {
                kind = ((CSharp.SyntaxKind)trivia.Kind).ToString();
            }
            else
            {
                kind = ((VisualBasic.SyntaxKind)trivia.Kind).ToString();
            }

            return(kind);
        }
        private CommonSyntaxNode GetRootNode(CommonSyntaxTrivia trivia)
        {
            CommonSyntaxNode rootNode = null;

            if (trivia.SyntaxTree != null)
            {
                rootNode = trivia.SyntaxTree.GetRoot();
            }
            else
            {
                rootNode = GetRootNode(trivia.Token);
            }

            return(rootNode);
        }
Exemple #4
0
        private void DisplaySyntaxTriviaDgml(CommonSyntaxTrivia trivia)
        {
            if (activeWpfTextView != null)
            {
                var      snapshot    = activeWpfTextView.TextBuffer.CurrentSnapshot;
                var      contentType = snapshot.ContentType;
                XElement dgml        = null;

                if (contentType.IsOfType(ContentTypeNames.CSharpContentType))
                {
                    dgml = trivia.ToDgml(LanguageNames.CSharp, activeSyntaxTree);
                }
                else if (contentType.IsOfType(ContentTypeNames.VisualBasicContentType))
                {
                    dgml = trivia.ToDgml(LanguageNames.VisualBasic, activeSyntaxTree);
                }

                DisplayDgml(dgml);
            }
        }
Exemple #5
0
 public IEnumerable<CodeIssue> GetIssues(IDocument document, CommonSyntaxTrivia trivia, CancellationToken cancellationToken)
 {
     throw new NotImplementedException();
 }
Exemple #6
0
 public IEnumerable <CodeIssue> GetIssues(IDocument document, CommonSyntaxTrivia trivia, CancellationToken cancellationToken = new CancellationToken())
 {
     throw new NotImplementedException();
 }
        private void AddTrivia(TreeViewItem parentItem, CommonSyntaxTrivia trivia, bool isLeadingTrivia)
        {
            var kind = trivia.GetKind(SourceLanguage);
            var tag  = new SyntaxTag()
            {
                SyntaxTrivia = trivia,
                Category     = SyntaxCategory.SyntaxTrivia,
                Span         = trivia.Span,
                FullSpan     = trivia.FullSpan,
                Kind         = kind,
                ParentItem   = parentItem
            };

            var item = new TreeViewItem()
            {
                Tag        = tag,
                IsExpanded = false,
                Foreground = Brushes.LightPink,
                //Background = trivia.ContainsDiagnostics ? Brushes.Pink : Brushes.White,
                Header = (isLeadingTrivia ? "Lead: " : "Trail: ") + tag.Kind + " " + trivia.Span.ToString()
            };

            if (SyntaxTree != null && trivia.ContainsDiagnostics)
            {
                item.ToolTip = string.Empty;
                foreach (var diagnostic in SyntaxTree.GetDiagnostics(trivia))
                {
                    item.ToolTip += diagnostic.ToString(null) + "\n";
                }

                item.ToolTip = item.ToolTip.ToString().Trim();
            }

            item.Selected += new RoutedEventHandler((sender, e) =>
            {
                isNavigatingFromTreeToSource = true;

                //typeTextLabel.Visibility = Visibility.Visible;
                //kindTextLabel.Visibility = Visibility.Visible;

                //kindValueLabel.Content = kind;
                try
                {
                    propertyGrid.Instance = trivia;
                }
                catch { }
                item.IsExpanded = true;

                if (!isNavigatingFromSourceToTree && SyntaxTriviaNavigationToSourceRequested != null)
                {
                    SyntaxTriviaNavigationToSourceRequested(trivia);
                }

                isNavigatingFromTreeToSource = false;
                e.Handled = true;
            });

            item.Expanded += new RoutedEventHandler((sender, e) =>
            {
                if (item.Items.Count == 1 && item.Items[0] == null)
                {
                    // Remove placeholder child and populate real children.
                    item.Items.RemoveAt(0);
                    AddNode(item, trivia.GetStructure());
                }
            });


            if (parentItem == root)
            {
                parentItem.Items.Clear();
                parentItem.Items.Add(item);
                parentItem.IsExpanded = true;
                //typeTextLabel.Visibility = Visibility.Hidden;
                //kindTextLabel.Visibility = Visibility.Hidden;
                //kindValueLabel.Content = string.Empty;
            }
            else
            {
                parentItem.Items.Add(item);
            }

            if (trivia.HasStructure)
            {
                if (IsLazy)
                {
                    // Add placeholder child to indicate that real children need to be populated on expansion.
                    item.Items.Add(null);
                }
                else
                {
                    // Recursively populate all descendants.
                    AddNode(item, trivia.GetStructure());
                }
            }
        }
        private CommonSyntaxNode GetRootNode(CommonSyntaxTrivia trivia)
        {
            CommonSyntaxNode rootNode = null;
            if (trivia.SyntaxTree != null)
            {
                rootNode = trivia.SyntaxTree.GetRoot();
            }
            else
            {
                rootNode = GetRootNode(trivia.Token);
            }

            return rootNode;
        }
        internal SyntaxTransporter(CommonSyntaxTrivia trivia)
        {
            try
            {
                var t = (CSharp.SyntaxTrivia)trivia;
                SourceLanguage = LanguageNames.CSharp;
            }
            catch
            {
                var t = (VisualBasic.SyntaxTrivia)trivia;
                SourceLanguage = LanguageNames.VisualBasic;
            }

            SyntaxStream = new MemoryStream();
            var rootNode = GetRootNode(trivia);
            if (rootNode != null)
            {
                if (SourceLanguage == LanguageNames.CSharp)
                {
                    var csharpRootNode = (CSharp.SyntaxNode)rootNode;
                    csharpRootNode.SerializeTo(SyntaxStream);
                }
                else
                {
                    var vbRootNode = (VisualBasic.SyntaxNode)rootNode;
                    vbRootNode.SerializeTo(SyntaxStream);
                }
            }

            ItemSpan = trivia.Span;
            ItemKind = trivia.GetKind(SourceLanguage);
            ItemCategory = SyntaxCategory.SyntaxTrivia;
        }
        private void AddTrivia(TreeViewItem parentItem, CommonSyntaxTrivia trivia, bool isLeadingTrivia)
        {
            var kind = trivia.GetKind(SourceLanguage);
            var tag = new SyntaxTag()
            {
                SyntaxTrivia = trivia,
                IsSyntaxNode = false,
                IsSyntaxToken = false,
                IsSyntaxTrivia = true,
                Span = trivia.Span,
                FullSpan = trivia.FullSpan,
                Kind = kind,
                ParentItem = parentItem
            };

            var item = new TreeViewItem()
            {
                Tag = tag,
                IsExpanded = true,
                Foreground = Brushes.Maroon,
                Background = trivia.HasDiagnostics ? Brushes.Pink : Brushes.White,
                Header = (isLeadingTrivia ? "Lead: " : "Trail: ") + tag.Kind + " " + trivia.Span.ToString()
            };

            if (trivia.HasDiagnostics)
            {
                item.ToolTip = string.Empty;
                foreach (var diagnostic in SyntaxTree.GetDiagnostics(trivia))
                {
                    item.ToolTip += diagnostic.ToString(null) + "\n";
                }

                item.ToolTip = item.ToolTip.ToString().Trim();
            }

            item.Selected += new RoutedEventHandler((sender, e) =>
            {
                if (!e.Handled)
                {
                    isNavigatingFromTreeToSource = true;

                    typeTextLabel.Visibility = Visibility.Visible;
                    kindTextLabel.Visibility = Visibility.Visible;
                    typeValueLabel.Content = trivia.GetType().Name;
                    kindValueLabel.Content = kind;
                    propertyGrid.SelectedObject = trivia;

                    // If IsLazy is true then populate only child items.
                    if (IsLazy && item.Items.Count == 0 && trivia.HasStructure)
                    {
                        AddNode(item, trivia.GetStructure());
                    }

                    item.IsExpanded = true;

                    if (!isNavigatingFromSourceToTree && SyntaxTriviaNavigationToSourceRequested != null)
                    {
                        SyntaxTriviaNavigationToSourceRequested(trivia);
                    }

                    isNavigatingFromTreeToSource = false;
                    e.Handled = true;
                }
            });

            if (parentItem == null)
            {
                treeView.Items.Clear();
                treeView.Items.Add(item);
                typeTextLabel.Visibility = Visibility.Hidden;
                kindTextLabel.Visibility = Visibility.Hidden;
                typeValueLabel.Content = string.Empty;
                kindValueLabel.Content = string.Empty;
            }
            else
            {
                parentItem.Items.Add(item);
            }

            // If IsLazy is false then recursively populate all descendent items.
            if (!IsLazy && trivia.HasStructure)
            {
                AddNode(item, trivia.GetStructure());
            }
        }
Exemple #11
0
        private void AddTrivia(TreeViewItem parentItem, CommonSyntaxTrivia trivia, bool isLeadingTrivia)
        {
            var kind = trivia.GetKind(SourceLanguage);
            var tag  = new SyntaxTag()
            {
                SyntaxTrivia   = trivia,
                IsSyntaxNode   = false,
                IsSyntaxToken  = false,
                IsSyntaxTrivia = true,
                Span           = trivia.Span,
                FullSpan       = trivia.FullSpan,
                Kind           = kind,
                ParentItem     = parentItem
            };

            var item = new TreeViewItem()
            {
                Tag        = tag,
                IsExpanded = true,
                Foreground = Brushes.Maroon,
                Background = trivia.HasDiagnostics ? Brushes.Pink : Brushes.White,
                Header     = (isLeadingTrivia ? "Lead: " : "Trail: ") + tag.Kind + " " + trivia.Span.ToString()
            };

            if (trivia.HasDiagnostics)
            {
                item.ToolTip = string.Empty;
                foreach (var diagnostic in SyntaxTree.GetDiagnostics(trivia))
                {
                    item.ToolTip += diagnostic.ToString(null) + "\n";
                }

                item.ToolTip = item.ToolTip.ToString().Trim();
            }

            item.Selected += new RoutedEventHandler((sender, e) =>
            {
                if (!e.Handled)
                {
                    isNavigatingFromTreeToSource = true;

                    typeTextLabel.Visibility    = Visibility.Visible;
                    kindTextLabel.Visibility    = Visibility.Visible;
                    typeValueLabel.Content      = trivia.GetType().Name;
                    kindValueLabel.Content      = kind;
                    propertyGrid.SelectedObject = trivia;

                    // If IsLazy is true then populate only child items.
                    if (IsLazy && item.Items.Count == 0 && trivia.HasStructure)
                    {
                        AddNode(item, trivia.GetStructure());
                    }

                    item.IsExpanded = true;

                    if (!isNavigatingFromSourceToTree && SyntaxTriviaNavigationToSourceRequested != null)
                    {
                        SyntaxTriviaNavigationToSourceRequested(trivia);
                    }

                    isNavigatingFromTreeToSource = false;
                    e.Handled = true;
                }
            });

            if (parentItem == null)
            {
                treeView.Items.Clear();
                treeView.Items.Add(item);
                typeTextLabel.Visibility = Visibility.Hidden;
                kindTextLabel.Visibility = Visibility.Hidden;
                typeValueLabel.Content   = string.Empty;
                kindValueLabel.Content   = string.Empty;
            }
            else
            {
                parentItem.Items.Add(item);
            }

            // If IsLazy is false then recursively populate all descendent items.
            if (!IsLazy && trivia.HasStructure)
            {
                AddNode(item, trivia.GetStructure());
            }
        }
 CommonSyntaxNode IBaseSyntaxNodeExt.GetStructure(CommonSyntaxTrivia trivia)
 {
     return((CommonSyntaxNode)this);
 }
Exemple #13
0
 CommonSyntaxTrivia ISyntaxAnnotation.AddAnnotationTo(CommonSyntaxTrivia trivia)
 {
     return(this.AddAnnotationTo((SyntaxTrivia)trivia));
 }
 public IEnumerable <Microsoft.CodeAnalysis.CodeActions.CodeIssue> GetIssues(Microsoft.CodeAnalysis.Document document, CommonSyntaxTrivia syntax, CancellationToken cancellationToken)
 {
     throw new NotImplementedException();
 }
 public IEnumerable<Microsoft.CodeAnalysis.CodeActions.CodeIssue> GetIssues(Microsoft.CodeAnalysis.Document document, CommonSyntaxTrivia syntax, CancellationToken cancellationToken) {
   throw new NotImplementedException();
 }