提交 23df39c7 编写于 作者: C CyrusNajmabadi

Don't include attributes in the indent guide tooltip for VB.

上级 fe08f95f
......@@ -19,7 +19,8 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Structure
If Not block?.EndBlockStatement.IsMissing Then
spans.AddIfNotNull(CreateBlockSpanFromBlock(
block, bannerNode:=accessorDeclaration,
autoCollapse:=True, type:=BlockTypes.Member, isCollapsible:=True))
autoCollapse:=True, type:=BlockTypes.Member,
isCollapsible:=True))
End If
End Sub
End Class
......
......@@ -3,6 +3,7 @@
Imports System.Threading
Imports Microsoft.CodeAnalysis.Options
Imports Microsoft.CodeAnalysis.Structure
Imports Microsoft.CodeAnalysis.Text
Imports Microsoft.CodeAnalysis.VisualBasic.Syntax
Namespace Microsoft.CodeAnalysis.VisualBasic.Structure
......@@ -14,10 +15,18 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Structure
options As OptionSet,
cancellationToken As CancellationToken)
CollectCommentsRegions(compilationUnit, spans)
spans.AddIfNotNull(CreateBlockSpan(
compilationUnit.Imports, bannerText:="Imports" & SpaceEllipsis,
autoCollapse:=True, type:=BlockTypes.Imports, isCollapsible:=True))
CollectCommentsRegions(compilationUnit.EndOfFileToken.LeadingTrivia, spans)
If Not compilationUnit.Imports.IsEmpty Then
Dim startPos = compilationUnit.Imports.First().SpanStart
Dim endPos = compilationUnit.Imports.Last().Span.End
Dim span = TextSpan.FromBounds(startPos, endPos)
spans.AddIfNotNull(CreateBlockSpan(
span, span, bannerText:="Imports" & SpaceEllipsis,
autoCollapse:=True, type:=BlockTypes.Imports, isCollapsible:=True,
isDefaultCollapsed:=False))
CollectCommentsRegions(compilationUnit.EndOfFileToken.LeadingTrivia, spans)
End If
End Sub
Protected Overrides Function SupportedInWorkspaceKind(kind As String) As Boolean
......
......@@ -17,8 +17,9 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Structure
Dim startPos = nodeSpan.Start
Dim endPos = startPos + trivia.ToString().TrimEnd().Length
Dim span = TextSpan.FromBounds(startPos, endPos)
spans.AddIfNotNull(CreateBlockSpan(
span:=TextSpan.FromBounds(startPos, endPos),
span:=span, hintSpan:=span,
bannerText:=Ellipsis, autoCollapse:=True,
type:=BlockTypes.PreprocessorRegion,
isCollapsible:=True, isDefaultCollapsed:=False))
......
......@@ -89,7 +89,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Structure
Dim fullSpan = TextSpan.FromBounds(startPos, endPos)
spans.AddIfNotNull(CreateBlockSpan(
fullSpan, GetBannerText(documentationComment, cancellationToken),
fullSpan, fullSpan, GetBannerText(documentationComment, cancellationToken),
autoCollapse:=True, type:=BlockTypes.Comment,
isCollapsible:=True, isDefaultCollapsed:=False))
End Sub
......
......@@ -26,8 +26,9 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Structure.MetadataAsSource
cancellationToken As CancellationToken)
Dim match = regionDirective.GetMatchingStartOrEndDirective(cancellationToken)
If match IsNot Nothing Then
Dim span = TextSpan.FromBounds(regionDirective.SpanStart, match.Span.End)
spans.AddIfNotNull(CreateBlockSpan(
TextSpan.FromBounds(regionDirective.SpanStart, match.Span.End),
span, span,
GetBannerText(regionDirective),
autoCollapse:=True, type:=BlockTypes.PreprocessorRegion,
isCollapsible:=True, isDefaultCollapsed:=False))
......
......@@ -29,8 +29,9 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Structure
Dim autoCollapse = options.GetOption(
BlockStructureOptions.CollapseRegionsWhenCollapsingToDefinitions, LanguageNames.VisualBasic)
Dim span = TextSpan.FromBounds(regionDirective.SpanStart, matchingDirective.Span.End)
spans.AddIfNotNull(CreateBlockSpan(
TextSpan.FromBounds(regionDirective.SpanStart, matchingDirective.Span.End),
span, span,
GetBannerText(regionDirective),
autoCollapse:=autoCollapse,
isDefaultCollapsed:=True,
......
......@@ -25,7 +25,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Structure
Dim bannerText = lineText & SpaceEllipsis
spans.AddIfNotNull(CreateBlockSpan(
span, bannerText, autoCollapse:=False,
span, span, bannerText, autoCollapse:=False,
type:=BlockTypes.Expression,
isCollapsible:=True, isDefaultCollapsed:=False))
End Sub
......
......@@ -3,6 +3,7 @@
Imports System.Collections.Immutable
Imports Microsoft.CodeAnalysis.Structure
Imports Microsoft.CodeAnalysis.Text
Imports Microsoft.CodeAnalysis.VisualBasic.Syntax
Namespace Microsoft.CodeAnalysis.VisualBasic.Structure
Friend Module VisualBasicOutliningHelpers
......@@ -20,12 +21,14 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Structure
Private Function CreateCommentsRegion(startComment As SyntaxTrivia,
endComment As SyntaxTrivia) As BlockSpan?
Dim span = TextSpan.FromBounds(startComment.SpanStart, endComment.Span.End)
Return CreateBlockSpan(
TextSpan.FromBounds(startComment.SpanStart, endComment.Span.End),
span, span,
GetCommentBannerText(startComment),
autoCollapse:=True,
type:=BlockTypes.Comment,
isCollapsible:=True, isDefaultCollapsed:=False)
isCollapsible:=True,
isDefaultCollapsed:=False)
End Function
' For testing purposes
......@@ -78,6 +81,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Structure
Friend Function CreateBlockSpan(
span As TextSpan,
hintSpan As TextSpan,
bannerText As String,
autoCollapse As Boolean,
type As String,
......@@ -85,6 +89,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Structure
isDefaultCollapsed As Boolean) As BlockSpan?
Return New BlockSpan(
textSpan:=span,
hintSpan:=hintSpan,
bannerText:=bannerText,
autoCollapse:=autoCollapse,
isDefaultCollapsed:=isDefaultCollapsed,
......@@ -98,8 +103,10 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Structure
autoCollapse As Boolean,
type As String,
isCollapsible As Boolean) As BlockSpan?
Return CreateBlockSpan(blockNode.Span, bannerText, autoCollapse,
type, isCollapsible, isDefaultCollapsed:=False)
Return CreateBlockSpan(
blockNode.Span, GetHintSpan(blockNode),
bannerText, autoCollapse,
type, isCollapsible, isDefaultCollapsed:=False)
End Function
Friend Function CreateBlockSpanFromBlock(
......@@ -109,24 +116,27 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Structure
type As String,
isCollapsible As Boolean) As BlockSpan?
Return CreateBlockSpan(
blockNode.Span, GetNodeBannerText(bannerNode),
blockNode.Span, GetHintSpan(blockNode),
GetNodeBannerText(bannerNode),
autoCollapse, type, isCollapsible, isDefaultCollapsed:=False)
End Function
Friend Function CreateBlockSpan(syntaxList As IEnumerable(Of SyntaxNode),
bannerText As String,
autoCollapse As Boolean,
type As String,
isCollapsible As Boolean) As BlockSpan?
If syntaxList.IsEmpty() Then
Return Nothing
Private Function GetHintSpan(blockNode As SyntaxNode) As TextSpan
' Don't include attributes in the hint-span for a block. We don't want
' the attributes to show up when users hover over indent guide lines.
Dim firstToken = blockNode.GetFirstToken()
If firstToken.Kind() = SyntaxKind.LessThanToken AndAlso
firstToken.Parent.IsKind(SyntaxKind.AttributeList) Then
Dim attributeOwner = firstToken.Parent.Parent
For Each child In attributeOwner.ChildNodesAndTokens
If child.Kind() <> SyntaxKind.AttributeList Then
Return TextSpan.FromBounds(child.SpanStart, child.Span.End)
End If
Next
End If
Dim startPos = syntaxList.First().SpanStart
Dim endPos = syntaxList.Last().Span.End
Return CreateBlockSpan(
TextSpan.FromBounds(startPos, endPos), bannerText,
autoCollapse, type, isCollapsible, isDefaultCollapsed:=False)
Return blockNode.Span
End Function
End Module
End Namespace
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册