@@ -49,21 +49,20 @@ import { SimpleReplElement, RawObjectReplElement, ReplEvaluationInput, ReplEvalu
4949import { IListVirtualDelegate } from 'vs/base/browser/ui/list/list' ;
5050import { ITreeRenderer , ITreeNode , ITreeContextMenuEvent , IAsyncDataSource } from 'vs/base/browser/ui/tree/tree' ;
5151import { IEditorService } from 'vs/workbench/services/editor/common/editorService' ;
52- import { renderExpressionValue } from 'vs/workbench/contrib/debug/browser/baseDebugView' ;
52+ import { renderExpressionValue , AbstractExpressionsRenderer , IExpressionTemplateData , renderVariable , IInputBoxOptions } from 'vs/workbench/contrib/debug/browser/baseDebugView' ;
5353import { handleANSIOutput } from 'vs/workbench/contrib/debug/browser/debugANSIHandling' ;
5454import { ILabelService } from 'vs/platform/label/common/label' ;
5555import { LinkDetector } from 'vs/workbench/contrib/debug/browser/linkDetector' ;
5656import { Separator } from 'vs/base/browser/ui/actionbar/actionbar' ;
57- import { IContextMenuService } from 'vs/platform/contextview/browser/contextView' ;
57+ import { IContextMenuService , IContextViewService } from 'vs/platform/contextview/browser/contextView' ;
5858import { removeAnsiEscapeCodes } from 'vs/base/common/strings' ;
5959import { WorkbenchAsyncDataTree } from 'vs/platform/list/browser/listService' ;
6060import { IConfigurationService } from 'vs/platform/configuration/common/configuration' ;
6161import { ITextResourcePropertiesService } from 'vs/editor/common/services/resourceConfiguration' ;
6262import { RunOnceScheduler } from 'vs/base/common/async' ;
6363import { FuzzyScore , createMatches } from 'vs/base/common/filters' ;
64- import { HighlightedLabel } from 'vs/base/browser/ui/highlightedlabel/highlightedLabel' ;
64+ import { HighlightedLabel , IHighlight } from 'vs/base/browser/ui/highlightedlabel/highlightedLabel' ;
6565import { IClipboardService } from 'vs/platform/clipboard/common/clipboardService' ;
66- import { VariablesRenderer } from 'vs/workbench/contrib/debug/browser/variablesView' ;
6766
6867const $ = dom . $ ;
6968
@@ -405,17 +404,18 @@ export class Repl extends Panel implements IPrivateReplService, IHistoryNavigati
405404 this . replDelegate = new ReplDelegate ( this . configurationService ) ;
406405 const wordWrap = this . configurationService . getValue < IDebugConfiguration > ( 'debug' ) . console . wordWrap ;
407406 dom . toggleClass ( treeContainer , 'word-wrap' , wordWrap ) ;
407+ const linkDetector = this . instantiationService . createInstance ( LinkDetector ) ;
408408 this . tree = this . instantiationService . createInstance (
409409 WorkbenchAsyncDataTree ,
410410 'DebugRepl' ,
411411 treeContainer ,
412412 this . replDelegate ,
413413 [
414- this . instantiationService . createInstance ( VariablesRenderer ) ,
415- this . instantiationService . createInstance ( ReplSimpleElementsRenderer ) ,
414+ this . instantiationService . createInstance ( ReplVariablesRenderer , linkDetector ) ,
415+ this . instantiationService . createInstance ( ReplSimpleElementsRenderer , linkDetector ) ,
416416 new ReplEvaluationInputsRenderer ( ) ,
417- new ReplEvaluationResultsRenderer ( ) ,
418- new ReplRawObjectsRenderer ( )
417+ new ReplEvaluationResultsRenderer ( linkDetector ) ,
418+ new ReplRawObjectsRenderer ( linkDetector ) ,
419419 ] ,
420420 // https://github.com/microsoft/TypeScript/issues/32526
421421 new ReplDataSource ( ) as IAsyncDataSource < IDebugSession , IReplElement > ,
@@ -626,6 +626,8 @@ class ReplEvaluationResultsRenderer implements ITreeRenderer<ReplEvaluationResul
626626 return ReplEvaluationResultsRenderer . ID ;
627627 }
628628
629+ constructor ( private readonly linkDetector : LinkDetector ) { }
630+
629631 renderTemplate ( container : HTMLElement ) : IReplEvaluationResultTemplateData {
630632 const output = dom . append ( container , $ ( '.evaluation-result.expression' ) ) ;
631633 const value = dom . append ( output , $ ( 'span.value' ) ) ;
@@ -639,7 +641,8 @@ class ReplEvaluationResultsRenderer implements ITreeRenderer<ReplEvaluationResul
639641 renderExpressionValue ( expression , templateData . value , {
640642 preserveWhitespace : ! expression . hasChildren ,
641643 showHover : false ,
642- colorize : true
644+ colorize : true ,
645+ linkDetector : this . linkDetector
643646 } ) ;
644647 if ( expression . hasChildren ) {
645648 templateData . annotation . className = 'annotation octicon octicon-info' ;
@@ -656,21 +659,16 @@ class ReplSimpleElementsRenderer implements ITreeRenderer<SimpleReplElement, Fuz
656659 static readonly ID = 'simpleReplElement' ;
657660
658661 constructor (
662+ private readonly linkDetector : LinkDetector ,
659663 @IEditorService private readonly editorService : IEditorService ,
660664 @ILabelService private readonly labelService : ILabelService ,
661- @IInstantiationService private readonly instantiationService : IInstantiationService ,
662665 @IThemeService private readonly themeService : IThemeService
663666 ) { }
664667
665668 get templateId ( ) : string {
666669 return ReplSimpleElementsRenderer . ID ;
667670 }
668671
669- @memoize
670- get linkDetector ( ) : LinkDetector {
671- return this . instantiationService . createInstance ( LinkDetector ) ;
672- }
673-
674672 renderTemplate ( container : HTMLElement ) : ISimpleReplElementTemplateData {
675673 const data : ISimpleReplElementTemplateData = Object . create ( null ) ;
676674 dom . addClass ( container , 'output' ) ;
@@ -716,9 +714,37 @@ class ReplSimpleElementsRenderer implements ITreeRenderer<SimpleReplElement, Fuz
716714 }
717715}
718716
717+ export class ReplVariablesRenderer extends AbstractExpressionsRenderer {
718+
719+ static readonly ID = 'replVariable' ;
720+
721+ get templateId ( ) : string {
722+ return ReplVariablesRenderer . ID ;
723+ }
724+
725+ constructor (
726+ private readonly linkDetector : LinkDetector ,
727+ @IDebugService debugService : IDebugService ,
728+ @IContextViewService contextViewService : IContextViewService ,
729+ @IThemeService themeService : IThemeService ,
730+ ) {
731+ super ( debugService , contextViewService , themeService ) ;
732+ }
733+
734+ protected renderExpression ( expression : IExpression , data : IExpressionTemplateData , highlights : IHighlight [ ] ) : void {
735+ renderVariable ( expression as Variable , data , true , highlights , this . linkDetector ) ;
736+ }
737+
738+ protected getInputBoxOptions ( expression : IExpression ) : IInputBoxOptions | undefined {
739+ return undefined ;
740+ }
741+ }
742+
719743class ReplRawObjectsRenderer implements ITreeRenderer < RawObjectReplElement , FuzzyScore , IRawObjectReplTemplateData > {
720744 static readonly ID = 'rawObject' ;
721745
746+ constructor ( private readonly linkDetector : LinkDetector ) { }
747+
722748 get templateId ( ) : string {
723749 return ReplRawObjectsRenderer . ID ;
724750 }
@@ -748,7 +774,8 @@ class ReplRawObjectsRenderer implements ITreeRenderer<RawObjectReplElement, Fuzz
748774 // value
749775 renderExpressionValue ( element . value , templateData . value , {
750776 preserveWhitespace : true ,
751- showHover : false
777+ showHover : false ,
778+ linkDetector : this . linkDetector
752779 } ) ;
753780
754781 // annotation if any
@@ -807,7 +834,7 @@ class ReplDelegate implements IListVirtualDelegate<IReplElement> {
807834
808835 getTemplateId ( element : IReplElement ) : string {
809836 if ( element instanceof Variable && element . name ) {
810- return VariablesRenderer . ID ;
837+ return ReplVariablesRenderer . ID ;
811838 }
812839 if ( element instanceof ReplEvaluationResult ) {
813840 return ReplEvaluationResultsRenderer . ID ;
0 commit comments