@@ -34,18 +34,30 @@ module ts {
3434 export function collectElements ( sourceFile : SourceFile ) : OutliningSpan [ ] {
3535 var elements : OutliningSpan [ ] = [ ] ;
3636
37- function addOutlineRange ( hintSpanNode : Node , startElement : Node , endElement : Node ) {
37+ function addOutliningSpan ( hintSpanNode : Node , startElement : Node , endElement : Node , autoCollapse : boolean ) {
3838 if ( hintSpanNode && startElement && endElement ) {
3939 var span : OutliningSpan = {
4040 textSpan : TypeScript . TextSpan . fromBounds ( startElement . pos , endElement . end ) ,
4141 hintSpan : TypeScript . TextSpan . fromBounds ( hintSpanNode . getStart ( ) , hintSpanNode . end ) ,
4242 bannerText : "..." ,
43- autoCollapse : false
43+ autoCollapse : autoCollapse
4444 } ;
4545 elements . push ( span ) ;
4646 }
4747 }
4848
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+
4961 var depth = 0 ;
5062 var maxDepth = 20 ;
5163 function walk ( n : Node ) : void {
@@ -62,7 +74,7 @@ module ts {
6274 case SyntaxKind . FinallyBlock :
6375 var openBrace = findChildOfKind ( n , SyntaxKind . OpenBraceToken , sourceFile ) ;
6476 var closeBrace = findChildOfKind ( n , SyntaxKind . CloseBraceToken , sourceFile ) ;
65- addOutlineRange ( n . parent , openBrace , closeBrace ) ;
77+ addOutliningSpan ( n . parent , openBrace , closeBrace , autoCollapse ( n ) ) ;
6678 break ;
6779 case SyntaxKind . ClassDeclaration :
6880 case SyntaxKind . InterfaceDeclaration :
@@ -71,12 +83,12 @@ module ts {
7183 case SyntaxKind . SwitchStatement :
7284 var openBrace = findChildOfKind ( n , SyntaxKind . OpenBraceToken , sourceFile ) ;
7385 var closeBrace = findChildOfKind ( n , SyntaxKind . CloseBraceToken , sourceFile ) ;
74- addOutlineRange ( n , openBrace , closeBrace ) ;
86+ addOutliningSpan ( n , openBrace , closeBrace , autoCollapse ( n ) ) ;
7587 break ;
7688 case SyntaxKind . ArrayLiteral :
7789 var openBracket = findChildOfKind ( n , SyntaxKind . OpenBracketToken , sourceFile ) ;
7890 var closeBracket = findChildOfKind ( n , SyntaxKind . CloseBracketToken , sourceFile ) ;
79- addOutlineRange ( n , openBracket , closeBracket ) ;
91+ addOutliningSpan ( n , openBracket , closeBracket , autoCollapse ( n ) ) ;
8092 break ;
8193 }
8294 depth ++ ;
0 commit comments