@@ -34,18 +34,30 @@ module ts {
34
34
export function collectElements ( sourceFile : SourceFile ) : OutliningSpan [ ] {
35
35
var elements : OutliningSpan [ ] = [ ] ;
36
36
37
- function addOutlineRange ( hintSpanNode : Node , startElement : Node , endElement : Node ) {
37
+ function addOutliningSpan ( hintSpanNode : Node , startElement : Node , endElement : Node , autoCollapse : boolean ) {
38
38
if ( hintSpanNode && startElement && endElement ) {
39
39
var span : OutliningSpan = {
40
40
textSpan : TypeScript . TextSpan . fromBounds ( startElement . pos , endElement . end ) ,
41
41
hintSpan : TypeScript . TextSpan . fromBounds ( hintSpanNode . getStart ( ) , hintSpanNode . end ) ,
42
42
bannerText : "..." ,
43
- autoCollapse : false
43
+ autoCollapse : autoCollapse
44
44
} ;
45
45
elements . push ( span ) ;
46
46
}
47
47
}
48
48
49
+ function autoCollapse ( node : Node ) {
50
+ switch ( node . kind ) {
51
+ case SyntaxKind . ModuleBlock :
52
+ case SyntaxKind . ClassDeclaration :
53
+ case SyntaxKind . InterfaceDeclaration :
54
+ case SyntaxKind . EnumDeclaration :
55
+ return false ;
56
+ }
57
+
58
+ return true ;
59
+ }
60
+
49
61
var depth = 0 ;
50
62
var maxDepth = 20 ;
51
63
function walk ( n : Node ) : void {
@@ -62,7 +74,7 @@ module ts {
62
74
case SyntaxKind . FinallyBlock :
63
75
var openBrace = findChildOfKind ( n , SyntaxKind . OpenBraceToken , sourceFile ) ;
64
76
var closeBrace = findChildOfKind ( n , SyntaxKind . CloseBraceToken , sourceFile ) ;
65
- addOutlineRange ( n . parent , openBrace , closeBrace ) ;
77
+ addOutliningSpan ( n . parent , openBrace , closeBrace , autoCollapse ( n ) ) ;
66
78
break ;
67
79
case SyntaxKind . ClassDeclaration :
68
80
case SyntaxKind . InterfaceDeclaration :
@@ -71,12 +83,12 @@ module ts {
71
83
case SyntaxKind . SwitchStatement :
72
84
var openBrace = findChildOfKind ( n , SyntaxKind . OpenBraceToken , sourceFile ) ;
73
85
var closeBrace = findChildOfKind ( n , SyntaxKind . CloseBraceToken , sourceFile ) ;
74
- addOutlineRange ( n , openBrace , closeBrace ) ;
86
+ addOutliningSpan ( n , openBrace , closeBrace , autoCollapse ( n ) ) ;
75
87
break ;
76
88
case SyntaxKind . ArrayLiteral :
77
89
var openBracket = findChildOfKind ( n , SyntaxKind . OpenBracketToken , sourceFile ) ;
78
90
var closeBracket = findChildOfKind ( n , SyntaxKind . CloseBracketToken , sourceFile ) ;
79
- addOutlineRange ( n , openBracket , closeBracket ) ;
91
+ addOutliningSpan ( n , openBracket , closeBracket , autoCollapse ( n ) ) ;
80
92
break ;
81
93
}
82
94
depth ++ ;
0 commit comments