@@ -7,7 +7,7 @@ import severity from 'vs/base/common/severity';
7
7
import * as dom from 'vs/base/browser/dom' ;
8
8
import { IAccessibilityProvider } from 'vs/base/browser/ui/list/listWidget' ;
9
9
import { Variable } from 'vs/workbench/contrib/debug/common/debugModel' ;
10
- import { SimpleReplElement , RawObjectReplElement , ReplEvaluationInput , ReplEvaluationResult } from 'vs/workbench/contrib/debug/common/replModel' ;
10
+ import { SimpleReplElement , RawObjectReplElement , ReplEvaluationInput , ReplEvaluationResult , ReplGroup } from 'vs/workbench/contrib/debug/common/replModel' ;
11
11
import { CachedListVirtualDelegate } from 'vs/base/browser/ui/list/list' ;
12
12
import { ITreeRenderer , ITreeNode , IAsyncDataSource } from 'vs/base/browser/ui/tree/tree' ;
13
13
import { IEditorService } from 'vs/workbench/services/editor/common/editorService' ;
@@ -30,6 +30,10 @@ interface IReplEvaluationInputTemplateData {
30
30
label : HighlightedLabel ;
31
31
}
32
32
33
+ interface IReplGroupTemplateData {
34
+ label : HighlightedLabel ;
35
+ }
36
+
33
37
interface IReplEvaluationResultTemplateData {
34
38
value : HTMLElement ;
35
39
annotation : HTMLElement ;
@@ -76,6 +80,29 @@ export class ReplEvaluationInputsRenderer implements ITreeRenderer<ReplEvaluatio
76
80
}
77
81
}
78
82
83
+ export class ReplGroupRenderer implements ITreeRenderer < ReplGroup , FuzzyScore , IReplGroupTemplateData > {
84
+ static readonly ID = 'replGroup' ;
85
+
86
+ get templateId ( ) : string {
87
+ return ReplGroupRenderer . ID ;
88
+ }
89
+
90
+ renderTemplate ( container : HTMLElement ) : IReplEvaluationInputTemplateData {
91
+ const input = dom . append ( container , $ ( '.expression' ) ) ;
92
+ const label = new HighlightedLabel ( input , false ) ;
93
+ return { label } ;
94
+ }
95
+
96
+ renderElement ( element : ITreeNode < ReplGroup , FuzzyScore > , _index : number , templateData : IReplGroupTemplateData ) : void {
97
+ const replGroup = element . element ;
98
+ templateData . label . set ( replGroup . name , createMatches ( element . filterData ) ) ;
99
+ }
100
+
101
+ disposeTemplate ( _templateData : IReplEvaluationInputTemplateData ) : void {
102
+ // noop
103
+ }
104
+ }
105
+
79
106
export class ReplEvaluationResultsRenderer implements ITreeRenderer < ReplEvaluationResult , FuzzyScore , IReplEvaluationResultTemplateData > {
80
107
static readonly ID = 'replEvaluationResult' ;
81
108
@@ -296,6 +323,9 @@ export class ReplDelegate extends CachedListVirtualDelegate<IReplElement> {
296
323
// Variable with no name is a top level variable which should be rendered like a repl element #17404
297
324
return ReplSimpleElementsRenderer . ID ;
298
325
}
326
+ if ( element instanceof ReplGroup ) {
327
+ return ReplGroupRenderer . ID ;
328
+ }
299
329
300
330
return ReplRawObjectsRenderer . ID ;
301
331
}
@@ -317,7 +347,7 @@ export class ReplDataSource implements IAsyncDataSource<IDebugSession, IReplElem
317
347
return true ;
318
348
}
319
349
320
- return ! ! ( < IExpressionContainer > element ) . hasChildren ;
350
+ return ! ! ( < IExpressionContainer | ReplGroup > element ) . hasChildren ;
321
351
}
322
352
323
353
getChildren ( element : IReplElement | IDebugSession ) : Promise < IReplElement [ ] > {
@@ -327,6 +357,9 @@ export class ReplDataSource implements IAsyncDataSource<IDebugSession, IReplElem
327
357
if ( element instanceof RawObjectReplElement ) {
328
358
return element . getChildren ( ) ;
329
359
}
360
+ if ( element instanceof ReplGroup ) {
361
+ return Promise . resolve ( element . getChildren ( ) ) ;
362
+ }
330
363
331
364
return ( < IExpression > element ) . getChildren ( ) ;
332
365
}
@@ -343,6 +376,9 @@ export class ReplAccessibilityProvider implements IAccessibilityProvider<IReplEl
343
376
if ( element instanceof RawObjectReplElement ) {
344
377
return localize ( 'replRawObjectAriaLabel' , "Repl variable {0} has value {1}, read eval print loop, debug" , element . name , element . value ) ;
345
378
}
379
+ if ( element instanceof ReplGroup ) {
380
+ return localize ( 'replGroup' , "Repl group {0}, read eval print loop, debug" , element . name ) ;
381
+ }
346
382
347
383
return '' ;
348
384
}
0 commit comments