@@ -35,14 +35,24 @@ export class DebugSessionTracker
35
35
* The modules are kept in an array to maintain the load order of the modules.
36
36
*/
37
37
private modules = new Map < vscode . DebugSession , DebugProtocol . Module [ ] > ( ) ;
38
- private modulesChanged = new vscode . EventEmitter < void > ( ) ;
38
+ private modulesChanged = new vscode . EventEmitter <
39
+ vscode . DebugSession | undefined
40
+ > ( ) ;
39
41
40
42
/**
41
43
* Fired when modules are changed for any active debug session.
42
44
*
43
45
* Use `debugSessionModules` to retieve the active modules for a given debug session.
44
46
*/
45
- onDidChangeModules : vscode . Event < void > = this . modulesChanged . event ;
47
+ onDidChangeModules : vscode . Event < vscode . DebugSession | undefined > =
48
+ this . modulesChanged . event ;
49
+
50
+ constructor ( ) {
51
+ this . onDidChangeModules ( this . moduleChangedListener , this ) ;
52
+ vscode . debug . onDidChangeActiveDebugSession ( ( session ) =>
53
+ this . modulesChanged . fire ( session ) ,
54
+ ) ;
55
+ }
46
56
47
57
dispose ( ) {
48
58
this . modules . clear ( ) ;
@@ -70,7 +80,27 @@ export class DebugSessionTracker
70
80
/** Clear information from the active session. */
71
81
private onExit ( session : vscode . DebugSession ) {
72
82
this . modules . delete ( session ) ;
73
- this . modulesChanged . fire ( ) ;
83
+ this . modulesChanged . fire ( undefined ) ;
84
+ }
85
+
86
+ private showModulesTreeView ( showModules : boolean ) {
87
+ vscode . commands . executeCommand (
88
+ "setContext" ,
89
+ "lldb-dap.showModules" ,
90
+ showModules ,
91
+ ) ;
92
+ }
93
+
94
+ private moduleChangedListener ( session : vscode . DebugSession | undefined ) {
95
+ if ( ! session ) {
96
+ this . showModulesTreeView ( false ) ;
97
+ return ;
98
+ }
99
+
100
+ if ( session == vscode . debug . activeDebugSession ) {
101
+ const sessionHasModules = this . modules . get ( session ) != undefined ;
102
+ this . showModulesTreeView ( sessionHasModules ) ;
103
+ }
74
104
}
75
105
76
106
private onDidSendMessage (
@@ -103,7 +133,7 @@ export class DebugSessionTracker
103
133
break ;
104
134
}
105
135
this . modules . set ( session , modules ) ;
106
- this . modulesChanged . fire ( ) ;
136
+ this . modulesChanged . fire ( session ) ;
107
137
}
108
138
}
109
139
}
0 commit comments